Changeset: 61a110b4fbe6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=61a110b4fbe6
Modified Files:
        gdk/gdk_calc.c
        sql/storage/bat/bat_table.c
Branch: mosaic
Log Message:

Merge with default


diffs (131 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -2921,9 +2921,9 @@ BATcalcadd(BAT *b1, BAT *b2, BAT *s, int
        /* if both inputs are sorted the same way, and no overflow
         * occurred (we only know for sure if abort_on_error is set),
         * the result is also sorted */
-       bn->T->sorted = (abort_on_error && b1->T->sorted & b2->T->sorted) ||
+       bn->T->sorted = (abort_on_error && b1->T->sorted & b2->T->sorted && 
nils == 0) ||
                cnt <= 1 || nils == cnt;
-       bn->T->revsorted = (abort_on_error && b1->T->revsorted & 
b2->T->revsorted) ||
+       bn->T->revsorted = (abort_on_error && b1->T->revsorted & 
b2->T->revsorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
        bn->T->key = cnt <= 1;
        bn->T->nil = nils != 0;
@@ -2974,9 +2974,9 @@ BATcalcaddcst(BAT *b, const ValRecord *v
        /* if the input is sorted, and no overflow occurred (we only
         * know for sure if abort_on_error is set), the result is also
         * sorted */
-       bn->T->sorted = (abort_on_error && b->T->sorted) ||
+       bn->T->sorted = (abort_on_error && b->T->sorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
-       bn->T->revsorted = (abort_on_error && b->T->revsorted) ||
+       bn->T->revsorted = (abort_on_error && b->T->revsorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
        bn->T->key = cnt <= 1;
        bn->T->nil = nils != 0;
@@ -3027,9 +3027,9 @@ BATcalccstadd(const ValRecord *v, BAT *b
        /* if the input is sorted, and no overflow occurred (we only
         * know for sure if abort_on_error is set), the result is also
         * sorted */
-       bn->T->sorted = (abort_on_error && b->T->sorted) ||
+       bn->T->sorted = (abort_on_error && b->T->sorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
-       bn->T->revsorted = (abort_on_error && b->T->revsorted) ||
+       bn->T->revsorted = (abort_on_error && b->T->revsorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
        bn->T->key = cnt <= 1;
        bn->T->nil = nils != 0;
@@ -4718,9 +4718,9 @@ BATcalcsubcst(BAT *b, const ValRecord *v
        /* if the input is sorted, and no overflow occurred (we only
         * know for sure if abort_on_error is set), the result is also
         * sorted */
-       bn->T->sorted = (abort_on_error && b->T->sorted) ||
+       bn->T->sorted = (abort_on_error && b->T->sorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
-       bn->T->revsorted = (abort_on_error && b->T->revsorted) ||
+       bn->T->revsorted = (abort_on_error && b->T->revsorted && nils == 0) ||
                cnt <= 1 || nils == cnt;
        bn->T->key = cnt <= 1;
        bn->T->nil = nils != 0;
@@ -6590,10 +6590,10 @@ BATcalcmulcst(BAT *b, const ValRecord *v
                ValRecord sign;
 
                VARcalcsign(&sign, v);
-               bn->T->sorted = (sign.val.btval >= 0 && b->T->sorted) ||
+               bn->T->sorted = (sign.val.btval >= 0 && b->T->sorted && nils == 
0) ||
                        (sign.val.btval <= 0 && b->T->revsorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
-               bn->T->revsorted = (sign.val.btval >= 0 && b->T->revsorted) ||
+               bn->T->revsorted = (sign.val.btval >= 0 && b->T->revsorted && 
nils == 0) ||
                        (sign.val.btval <= 0 && b->T->sorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
        } else {
@@ -6648,10 +6648,10 @@ BATcalccstmul(const ValRecord *v, BAT *b
                ValRecord sign;
 
                VARcalcsign(&sign, v);
-               bn->T->sorted = (sign.val.btval >= 0 && b->T->sorted) ||
+               bn->T->sorted = (sign.val.btval >= 0 && b->T->sorted && nils == 
0) ||
                        (sign.val.btval <= 0 && b->T->revsorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
-               bn->T->revsorted = (sign.val.btval >= 0 && b->T->revsorted) ||
+               bn->T->revsorted = (sign.val.btval >= 0 && b->T->revsorted && 
nils == 0) ||
                        (sign.val.btval <= 0 && b->T->sorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
        } else {
@@ -8458,10 +8458,10 @@ BATcalcdivcst(BAT *b, const ValRecord *v
                ValRecord sign;
 
                VARcalcsign(&sign, v);
-               bn->T->sorted = (sign.val.btval > 0 && b->T->sorted) ||
+               bn->T->sorted = (sign.val.btval > 0 && b->T->sorted && nils == 
0) ||
                        (sign.val.btval < 0 && b->T->revsorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
-               bn->T->revsorted = (sign.val.btval > 0 && b->T->revsorted) ||
+               bn->T->revsorted = (sign.val.btval > 0 && b->T->revsorted && 
nils == 0) ||
                        (sign.val.btval < 0 && b->T->sorted && nils == 0) ||
                        cnt <= 1 || nils == cnt;
        } else {
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -77,8 +77,6 @@ delta_full_bat_( sql_trans *tr, sql_colu
        if (temp) 
                return r;
        b = temp_descriptor(bat->bid);
-       ui = temp_descriptor(bat->uibid);
-       uv = temp_descriptor(bat->uvbid);
        if (!b) {
                b = i;
        } else {
@@ -91,16 +89,20 @@ delta_full_bat_( sql_trans *tr, sql_colu
                }
                bat_destroy(i); 
        }
-       if (BATcount(ui)) {
-               if (needcopy) {
-                       r = BATcopy(b, b->htype, b->ttype, 1, TRANSIENT); 
-                       bat_destroy(b); 
-                       b = r;
+       if (bat->uibid && bat->ucnt) {
+               ui = temp_descriptor(bat->uibid);
+               uv = temp_descriptor(bat->uvbid);
+               if (BATcount(ui)) {
+                       if (needcopy) {
+                               r = BATcopy(b, b->htype, b->ttype, 1, 
TRANSIENT); 
+                               bat_destroy(b); 
+                               b = r;
+                       }
+                       void_replace_bat(b, ui, uv, TRUE);
                }
-               void_replace_bat(b, ui, uv, TRUE);
+               bat_destroy(ui); 
+               bat_destroy(uv); 
        }
-       bat_destroy(ui); 
-       bat_destroy(uv); 
        (void)c;
        if (!bat->cached /*&& !tr->parent*/) 
                bat->cached = temp_descriptor(b->batCacheid);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to