Changeset: 59b3760cadc0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=59b3760cadc0
Modified Files:
        gdk/gdk_calc.c
Branch: Oct2014
Log Message:

Don't copy properties if there are nils (probably due to candidate list).
This fixes bug 3706.


diffs (90 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -1979,9 +1979,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;
@@ -2032,9 +2032,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;
@@ -2085,9 +2085,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;
@@ -3257,9 +3257,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;
@@ -4572,10 +4572,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 {
@@ -4630,10 +4630,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 {
@@ -5819,10 +5819,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 {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to