Changeset: 68f6be1e7f0e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=68f6be1e7f0e Modified Files: gdk/gdk_aggr.c Branch: candidate-exceptions Log Message:
Add special case for no nil summation.
diffs (72 lines):
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -648,29 +648,50 @@ dofsum(const void *restrict values, oid
*sums = sum; \
} else if (ci->tpe == cand_dense) { \
/* multiple groups, no candidate list */ \
- ALGODEBUG fprintf(stderr, \
- "#%s: no candidates, with groups, no
overflow; " \
- "start " OIDFMT ", count " BUNFMT \
- "\n", \
- func, ci->seq, ncand); \
- for (i = 0; i < ncand; i++) { \
- if (gids == NULL || \
- (gids[i] >= min && gids[i] <= max)) { \
- gid = gids ? gids[i] - min : (oid) i; \
- x = vals[ci->seq + i - seqb]; \
- if (is_##TYPE1##_nil(x)) { \
- if (!skip_nils) { \
- sums[gid] =
TYPE2##_nil; \
- nils++; \
- } \
- } else { \
+ if (nonil) { \
+ ALGODEBUG fprintf(stderr,
\
+ "#%s: no candidates, with
groups, no nils, no overflow; " \
+ "start " OIDFMT ", count "
BUNFMT \
+ "\n",
\
+ func, ci->seq, ncand);
\
+ for (i = 0; i < ncand; i++) { \
+ if (gids == NULL || \
+ (gids[i] >= min && gids[i] <= max))
{ \
+ gid = gids ? gids[i] - min :
(oid) i; \
+ x = vals[ci->seq + i - seqb]; \
if (nil_if_empty && \
!(seen[gid >> 5] & (1U <<
(gid & 0x1F)))) { \
seen[gid >> 5] |= 1U <<
(gid & 0x1F); \
sums[gid] = 0; \
} \
- if
(!is_##TYPE2##_nil(sums[gid])) { \
- sums[gid] += x; \
+ sums[gid] += x; \
+ } \
+ } \
+ } else { \
+ ALGODEBUG fprintf(stderr,
\
+ "#%s: no candidates, with
groups, no overflow; " \
+ "start " OIDFMT ", count "
BUNFMT \
+ "\n",
\
+ func, ci->seq, ncand);
\
+ for (i = 0; i < ncand; i++) { \
+ if (gids == NULL || \
+ (gids[i] >= min && gids[i] <= max))
{ \
+ gid = gids ? gids[i] - min :
(oid) i; \
+ x = vals[ci->seq + i - seqb]; \
+ if (is_##TYPE1##_nil(x)) { \
+ if (!skip_nils) { \
+ sums[gid] =
TYPE2##_nil; \
+ nils++; \
+ } \
+ } else { \
+ if (nil_if_empty && \
+ !(seen[gid >> 5] &
(1U << (gid & 0x1F)))) { \
+ seen[gid >> 5]
|= 1U << (gid & 0x1F); \
+ sums[gid] = 0; \
+ } \
+ if
(!is_##TYPE2##_nil(sums[gid])) { \
+ sums[gid] += x;
\
+ } \
} \
} \
} \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
