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]