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