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

Reply via email to