Changeset: 27a2665fc5d3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/27a2665fc5d3 Modified Files: gdk/gdk_aggr.c Branch: pushcands Log Message:
Merged with default diffs (110 lines): diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -3297,14 +3297,13 @@ BATgroupsize(BAT *b, BAT *g, BAT *e, BAT i = canditer_next(ci) - hseq; \ if (!skip_nils || \ !is_##TYPE##_nil(vals[i])) { \ - oids[i] = i + hseq; \ + oids[gid++] = i + hseq; \ nils--; \ } \ } \ TIMEOUT_CHECK(timeoffset, \ TIMEOUT_HANDLER(BUN_NONE)); \ } else { \ - gid = 0; /* in case gids == NULL */ \ TIMEOUT_LOOP(ncand, timeoffset) { \ if (gids) \ gid = gids[ci->next]; \ @@ -3337,7 +3336,7 @@ do_groupmin(oid *restrict oids, BATiter oid min, oid max, struct canditer *restrict ci, BUN ncand, bool skip_nils, bool gdense) { - oid gid; + oid gid = 0; BUN i, nils; int t; const void *nil; @@ -3395,15 +3394,16 @@ do_groupmin(oid *restrict oids, BATiter while (ncand > 0) { ncand--; i = canditer_next(ci); - oids[i - hseq] = i; + oids[gid++] = i; nils--; } } else { while (ncand > 0) { ncand--; i = canditer_next(ci); - if (is_oid_nil(oids[i - hseq])) { - oids[i - hseq] = i; + gid = gids[i - hseq] - min; + if (is_oid_nil(oids[gid])) { + oids[gid] = i; nils--; } } @@ -3419,14 +3419,13 @@ do_groupmin(oid *restrict oids, BATiter i = canditer_next(ci) - hseq; if (!skip_nils || (*atomcmp)(BUNtail(*bi, i), nil) != 0) { - oids[i] = i + hseq; + oids[gid++] = i + hseq; nils--; } } TIMEOUT_CHECK(timeoffset, TIMEOUT_HANDLER(BUN_NONE)); } else { - gid = 0; /* in case gids == NULL */ TIMEOUT_LOOP(ncand, timeoffset) { if (gids) gid = gids[ci->next]; @@ -3468,7 +3467,7 @@ do_groupmax(oid *restrict oids, BATiter oid min, oid max, struct canditer *restrict ci, BUN ncand, bool skip_nils, bool gdense) { - oid gid; + oid gid = 0; BUN i, nils; int t; const void *nil; @@ -3526,16 +3525,17 @@ do_groupmax(oid *restrict oids, BATiter while (ncand > 0) { ncand--; i = canditer_next(ci); - oids[i - hseq] = i; + oids[gid++] = i; nils--; } } else { while (ncand > 0) { ncand--; i = canditer_next(ci); - if (is_oid_nil(oids[i - hseq])) + gid = gids[i - hseq] - min; + if (is_oid_nil(oids[gid])) nils--; - oids[i - hseq] = i; + oids[gid] = i; } } } @@ -3549,14 +3549,13 @@ do_groupmax(oid *restrict oids, BATiter i = canditer_next(ci) - hseq; if (!skip_nils || (*atomcmp)(BUNtail(*bi, i), nil) != 0) { - oids[i] = i + hseq; + oids[gid++] = i + hseq; nils--; } } TIMEOUT_CHECK(timeoffset, TIMEOUT_HANDLER(BUN_NONE)); } else { - gid = 0; /* in case gids == NULL */ TIMEOUT_LOOP(ncand, timeoffset) { if (gids) gid = gids[ci->next]; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list