Changeset: b5d55450e214 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b5d55450e214
Modified Files:
gdk/gdk_calc.c
sql/storage/bat/bat_table.c
Branch: default
Log Message:
Merge with Oct2014 branch.
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list