Changeset: 03849f068626 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03849f068626
Modified Files:
monetdb5/modules/kernel/arrays.c
Branch: arrays
Log Message:
make sure to keep already existing values in non-dimensional columns when
projecting them and adding the missing values
diffs (47 lines):
diff --git a/monetdb5/modules/kernel/arrays.c b/monetdb5/modules/kernel/arrays.c
--- a/monetdb5/modules/kernel/arrays.c
+++ b/monetdb5/modules/kernel/arrays.c
@@ -197,7 +197,7 @@ str ALGnonDimensionLeftfetchjoin1(bat* r
str ALGnonDimensionLeftfetchjoin2(bat* result, const bat *tids, const bat
*vals, const ptr *dims) {
BAT *materialisedBAT = NULL;
BAT *nonDimensionalBAT = NULL;
- BUN neededCellsNum;
+ BUN totalCellsNum, neededCellsNum;
gdk_array *array = (gdk_array*)*dims;
@@ -206,19 +206,26 @@ str ALGnonDimensionLeftfetchjoin2(bat* r
}
(void)*tids; //ignore the tids
- neededCellsNum = arrayCellsNum(array) - BATcount(nonDimensionalBAT);
+ totalCellsNum = arrayCellsNum(array);
+ neededCellsNum = totalCellsNum - BATcount(nonDimensionalBAT);
/*TODO: fix this so that I can have the real default value of the
column */
materialisedBAT =
materialise_nonDimensional_column(ATOMtype(BATttype(nonDimensionalBAT)),
neededCellsNum, NULL);
-
- BBPunfix(nonDimensionalBAT->batCacheid);
-
- if(materialisedBAT) {
- BBPkeepref(*result = materialisedBAT->batCacheid);
- return MAL_SUCCEED;
+ if(!materialisedBAT) {
+ BBPunfix(nonDimensionalBAT->batCacheid);
+ throw(MAL, "algebra.leftfetchjoin", "Problem materialising
non-dimensional column");
}
- throw(MAL, "algebra.leftfetchjoin", "Problem materialising
non-dimensional column");
+
+ /*append the missing values to the BAT */
+ BATappend(nonDimensionalBAT, materialisedBAT, TRUE);
+ BATsetcount(nonDimensionalBAT, totalCellsNum);
+
+ BBPunfix(materialisedBAT->batCacheid);
+ BBPkeepref(*result = nonDimensionalBAT->batCacheid);
+
+ return MAL_SUCCEED;
+
}
static str emptyCandidateResults(ptr *candsRes_dims, bat* candsRes_bid) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list