Changeset: 1fe231029127 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1fe231029127
Modified Files:
gdk/gdk_aggr.c
Branch: arrays
Log Message:
min and max for dimension
diffs (60 lines):
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2478,9 +2478,27 @@ BATgroupmin(BAT *b, BAT *g, BAT *e, BAT
do_groupmin, "BATgroupmin");
}
+static void* BATdimensionMin(BAT* b, void* aggr) {
+ BATiter bi = bat_iterator(b);
+ void *res = BUNtail(bi, 0);
+ int len = 0;
+ if (aggr == NULL) {
+ len = ATOMlen(BATttype(b), res);
+ aggr = GDKmalloc(len);
+ } else {
+ len = ATOMsize(ATOMtype(BATttype(b)));
+ }
+ if (aggr != NULL) /* else: malloc error */
+ memcpy(aggr, res, len);
+
+ return aggr;
+}
+
void *
BATmin(BAT *b, void *aggr)
{
+ if(isBATarray(b))
+ return BATdimensionMin(b, aggr);
return BATminmax(b, aggr, do_groupmin);
}
@@ -2492,9 +2510,28 @@ BATgroupmax(BAT *b, BAT *g, BAT *e, BAT
do_groupmax, "BATgroupmax");
}
+static void* BATdimensionMax(BAT* b, void* aggr) {
+ BATiter bi = bat_iterator(b);
+ void *res = BUNtail(bi, BATcount(b)-2);
+ int len = 0;
+ if (aggr == NULL) {
+ len = ATOMlen(BATttype(b), res);
+ aggr = GDKmalloc(len);
+ } else {
+ len = ATOMsize(ATOMtype(BATttype(b)));
+ }
+ if (aggr != NULL) /* else: malloc error */
+ memcpy(aggr, res, len);
+
+ return aggr;
+
+}
+
void *
BATmax(BAT *b, void *aggr)
{
+ if(isBATarray(b))
+ return BATdimensionMax(b, aggr);
return BATminmax(b, aggr, do_groupmax);
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list