Changeset: 59282f999f72 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/59282f999f72
Modified Files:
        gdk/gdk_analytic_func.c
        gdk/gdk_analytic_statistics.c
Branch: Aug2024
Log Message:

Skip first row when we need to compare rows with the previous one.
This should help coverity.


diffs (148 lines):

diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c
--- a/gdk/gdk_analytic_func.c
+++ b/gdk/gdk_analytic_func.c
@@ -1270,7 +1270,7 @@ GDKanalytical##OP(BAT *r, BAT *p, BAT *o
        BATiter si = bat_iterator(s);                                   \
        BATiter ei = bat_iterator(e);                                   \
        bool has_nils = false, last = false;                            \
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base, \
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base, \
                *levels_offset = NULL, nlevels = 0;                     \
        bit *np = pi.base, *op = oi.base;                               \
        const void *nil = ATOMnilptr(tpe);                              \
@@ -1281,6 +1281,7 @@ GDKanalytical##OP(BAT *r, BAT *p, BAT *o
        uint8_t *restrict rcast = (uint8_t *) Tloc(r, 0);               \
        BAT *st = NULL;                                                 \
                                                                        \
+       assert(np == NULL || cnt == 0 || np[0] == 0);                   \
        if (cnt > 0) {                                                  \
                switch (frame_type) {                                   \
                case 3: /* unbounded until current row */               \
@@ -1629,7 +1630,7 @@ GDKanalyticalcount(BAT *r, BAT *p, BAT *
        BATiter bi = bat_iterator(b);
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
                *levels_offset = NULL, nlevels = 0;
        lng curval = 0, *rb = (lng *) Tloc(r, 0);
        bit *np = pi.base, *op = oi.base;
@@ -1641,6 +1642,7 @@ GDKanalyticalcount(BAT *r, BAT *p, BAT *
        gdk_return res = GDK_SUCCEED;
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
@@ -1962,13 +1964,14 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *o,
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
        bool has_nils = false, last = false;
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
                *levels_offset = NULL, nlevels = 0;
        bit *np = pi.base, *op = oi.base;
        void *segment_tree = NULL;
        gdk_return res = GDK_SUCCEED;
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
@@ -2481,13 +2484,14 @@ GDKanalyticalprod(BAT *r, BAT *p, BAT *o
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
        bool has_nils = false, last = false;
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
                *levels_offset = NULL, nlevels = 0;
        bit *np = pi.base, *op = oi.base;
        void *segment_tree = NULL;
        gdk_return res = GDK_SUCCEED;
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
diff --git a/gdk/gdk_analytic_statistics.c b/gdk/gdk_analytic_statistics.c
--- a/gdk/gdk_analytic_statistics.c
+++ b/gdk/gdk_analytic_statistics.c
@@ -369,7 +369,7 @@ GDKanalyticalavg(BAT *r, BAT *p, BAT *o,
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
        bool has_nils = false, last = false;
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
                *levels_offset = NULL, nlevels = 0;
        lng n = 0, rr = 0;
        dbl *rb = (dbl *) Tloc(r, 0), curval = dbl_nil;
@@ -383,6 +383,7 @@ GDKanalyticalavg(BAT *r, BAT *p, BAT *o,
 #endif
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
@@ -635,7 +636,7 @@ GDKanalyticalavginteger(BAT *r, BAT *p, 
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
        bool has_nils = false, last = false;
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = 
si.base, *restrict end = ei.base,
                *levels_offset = NULL, nlevels = 0;
        lng rem = 0, ncnt = 0;
        bit *np = pi.base, *op = oi.base;
@@ -643,6 +644,7 @@ GDKanalyticalavginteger(BAT *r, BAT *p, 
        gdk_return res = GDK_SUCCEED;
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
@@ -911,6 +913,7 @@ GDKanalytical_##NAME(BAT *r, BAT *p, BAT
        gdk_return res = GDK_SUCCEED;                                   \
        BAT *st = NULL;                                                 \
                                                                        \
+       assert(np == NULL || cnt == 0 || np[0] == 0);                   \
        if (cnt > 0) {                                                  \
                switch (frame_type) {                                   \
                case 3: /* unbounded until current row */               \
@@ -1125,7 +1128,7 @@ GDKanalytical_##NAME(BAT *r, BAT *p, BAT
        BATiter si = bat_iterator(s);                                   \
        BATiter ei = bat_iterator(e);                                   \
        bool has_nils = false, last = false;                            \
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b1), *restrict start = 
si.base, *restrict end = ei.base, \
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b1), *restrict start = 
si.base, *restrict end = ei.base, \
                *levels_offset = NULL, nlevels = 0;                     \
        lng n = 0;                                                      \
        bit *np = pi.base, *op = oi.base;                               \
@@ -1134,6 +1137,7 @@ GDKanalytical_##NAME(BAT *r, BAT *p, BAT
        gdk_return res = GDK_SUCCEED;                                   \
        BAT *st = NULL;                                                 \
                                                                        \
+       assert(np == NULL || cnt == 0 || np[0] == 0);                   \
        if (cnt > 0) {                                                  \
                switch (frame_type) {                                   \
                case 3: /* unbounded until current row */               \
@@ -1381,7 +1385,7 @@ GDKanalytical_correlation(BAT *r, BAT *p
        BATiter b2i = bat_iterator(b2);
        BATiter si = bat_iterator(s);
        BATiter ei = bat_iterator(e);
-       oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b1),
+       oid i = 1, j = 0, k = 0, l = 0, cnt = BATcount(b1),
                *levels_offset = NULL, nlevels = 0;
        const oid *restrict start = si.base, *restrict end = ei.base;
        lng n = 0;
@@ -1391,6 +1395,7 @@ GDKanalytical_correlation(BAT *r, BAT *p
        gdk_return res = GDK_SUCCEED;
        BAT *st = NULL;
 
+       assert(np == NULL || cnt == 0 || np[0] == 0);
        if (cnt > 0) {
                switch (frame_type) {
                case 3: /* unbounded until current row */
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to