Changeset: 335b42ba9584 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=335b42ba9584
Modified Files:
gdk/gdk_analytic_func.c
Branch: window-tunning
Log Message:
More cleanup, this is still not right
diffs (truncated from 884 to 300 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
@@ -11,10 +11,6 @@
#include "gdk_analytic.h"
#include "gdk_calc_private.h"
-/* needed for some operators on floating-points */
-#define NAN_CHECK(TPE, i) || (is_##TPE##_nil(v) && is_##TPE##_nil(bp[i]))
-#define NO_NAN_CHECK(TPE, i)
-
#define NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, UPCAST) \
do { \
for (TPE i = 0; rb < rp; i++, rb++) { \
@@ -791,20 +787,20 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
return GDK_SUCCEED;
}
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE,
NAN_CHECK, MIN_MAX) \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE, MIN_MAX)
\
do { \
for (; k < i;) { \
TPE v = bp[k]; \
TPE curval = v; \
j = k++; \
- while (k < i && (bp[k] == v NAN_CHECK(TPE, k))) { \
- k++; \
+ while (k < i && bp[k] == v) { \
if (!is_##TPE##_nil(bp[k])) { \
if (is_##TPE##_nil(curval)) \
curval = bp[k]; \
else \
curval = MIN_MAX(bp[k],
curval); \
} \
+ k++; \
} \
for (; j < k; j++) \
rb[j] = curval; \
@@ -812,20 +808,20 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
} \
} while (0)
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE,
NAN_CHECK, MIN_MAX) \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE, MIN_MAX)
\
do { \
for (j = i - 1; j >= k; ) { \
TPE v = bp[j]; \
TPE curval = v; \
l = j--; \
- while (j >= k && (bp[j] == v NAN_CHECK(TPE, j))) { \
- j--; \
+ while (j >= k && bp[j] == v) { \
if (!is_##TPE##_nil(bp[j])) { \
if (is_##TPE##_nil(curval)) \
curval = bp[j]; \
else \
curval = MIN_MAX(bp[j],
curval); \
} \
+ j--; \
} \
m = MAX(k, j); \
for (; l >= m; l--) \
@@ -835,7 +831,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
k = i; \
} while (0)
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_ALL_ROWS(TPE, NAN_CHECK, MIN_MAX)
\
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_ALL_ROWS(TPE, MIN_MAX) \
do { \
TPE curval = TPE##_nil; \
for (j = k; j < i; j++) { \
@@ -852,7 +848,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
has_nils |= is_##TPE##_nil(curval); \
} while (0)
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW(TPE, NAN_CHECK, MIN_MAX)
\
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_CURRENT_ROW(TPE, MIN_MAX) \
do { \
for (; k < i; k++) { \
TPE v = bp[k]; \
@@ -861,7 +857,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
} \
} while (0)
-#define ANALYTICAL_MIN_MAX_CALC_FIXED_OTHERS(TPE, NAN_CHECK, MIN_MAX) \
+#define ANALYTICAL_MIN_MAX_CALC_FIXED_OTHERS(TPE, MIN_MAX) \
do { \
TPE curval = TPE##_nil; \
for (; k < i; k++) { \
@@ -890,7 +886,6 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
void *next = BUNtail(bpi, k), *curval = next; \
j = k++; \
while (k < i && atomcmp(BUNtail(bpi, k), next) == 0) { \
- k++; \
void *nnext = BUNtail(bpi, k); \
if (atomcmp(nnext, nil) != 0) { \
if (atomcmp(curval, nil) == 0) \
@@ -898,6 +893,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
else \
curval = atomcmp(nnext, curval)
GT_LT 0 ? curval : nnext; \
} \
+ k++; \
} \
for (; j < k; j++) \
if (tfastins_nocheckVAR(r, j, curval, Tsize(r))
!= GDK_SUCCEED) \
@@ -912,7 +908,6 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
void *next = BUNtail(bpi, j), *curval = next; \
l = j--; \
while (j >= k && atomcmp(BUNtail(bpi, j), next) == 0) {
\
- j--; \
void *nnext = BUNtail(bpi, j); \
if (atomcmp(nnext, nil) != 0) { \
if (atomcmp(curval, nil) == 0) \
@@ -920,6 +915,7 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
else \
curval = atomcmp(nnext, curval)
GT_LT 0 ? curval : nnext; \
} \
+ j--; \
} \
m = MAX(k, j); \
for (; l >= m; l--) \
@@ -980,23 +976,23 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
} \
} while (0)
-#define ANALYTICAL_MIN_MAX_PARTITIONS(TPE, NAN_CHECK, MIN_MAX, IMP)
\
+#define ANALYTICAL_MIN_MAX_PARTITIONS(TPE, MIN_MAX, IMP) \
do { \
TPE *bp = (TPE*)Tloc(b, 0), *restrict rb = (TPE*)Tloc(r, 0); \
if (p) { \
for (; i < cnt; i++) { \
if (np[i]) \
-
ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, NAN_CHECK, MIN_MAX); \
+
ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, MIN_MAX); \
} \
} \
i = cnt; \
- ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, NAN_CHECK, MIN_MAX);
\
+ ANALYTICAL_MIN_MAX_CALC_FIXED_##IMP(TPE, MIN_MAX); \
} while (0)
#ifdef HAVE_HGE
#define ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP) \
case TYPE_hge: \
- ANALYTICAL_MIN_MAX_PARTITIONS(hge, NO_NAN_CHECK, MIN_MAX, IMP);
\
+ ANALYTICAL_MIN_MAX_PARTITIONS(hge, MIN_MAX, IMP); \
break;
#else
#define ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP)
@@ -1006,23 +1002,23 @@ GDKanalyticallead(BAT *r, BAT *b, BAT *p
do { \
switch (ATOMbasetype(tpe)) { \
case TYPE_bte:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(bte, NO_NAN_CHECK,
MIN_MAX, IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(bte, MIN_MAX, IMP);
\
break;
\
case TYPE_sht:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(sht, NO_NAN_CHECK,
MIN_MAX, IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(sht, MIN_MAX, IMP);
\
break;
\
case TYPE_int:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(int, NO_NAN_CHECK,
MIN_MAX, IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(int, MIN_MAX, IMP);
\
break;
\
case TYPE_lng:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(lng, NO_NAN_CHECK,
MIN_MAX, IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(lng, MIN_MAX, IMP);
\
break;
\
ANALYTICAL_MIN_MAX_LIMIT(MIN_MAX, IMP)
\
case TYPE_flt:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(flt, NAN_CHECK, MIN_MAX,
IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(flt, MIN_MAX, IMP);
\
break;
\
case TYPE_dbl:
\
- ANALYTICAL_MIN_MAX_PARTITIONS(dbl, NAN_CHECK, MIN_MAX,
IMP); \
+ ANALYTICAL_MIN_MAX_PARTITIONS(dbl, MIN_MAX, IMP);
\
break;
\
default: {
\
if (p) {
\
@@ -1076,7 +1072,7 @@ ANALYTICAL_MIN_MAX(min, MIN, >)
ANALYTICAL_MIN_MAX(max, MAX, <)
/* Counting no nils for fixed sizes */
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE,
NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE) \
do { \
curval = 0; \
if (count_all) { \
@@ -1084,9 +1080,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
TPE v = bp[k]; \
j = k++; \
curval++; \
- while (k < i && (bp[k] == v NAN_CHECK(TPE, k)))
{ \
+ while (k < i && bp[k] == v) { \
+ curval++; \
k++; \
- curval++; \
} \
for (; j < k; j++) \
rb[j] = curval; \
@@ -1095,10 +1091,10 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
for (; k < i;) { \
TPE v = bp[k]; \
j = k++; \
- curval += !is_##TPE##_nil(bp[k]); \
- while (k < i && (bp[k] == v NAN_CHECK(TPE, k)))
{ \
+ curval += !is_##TPE##_nil(v); \
+ while (k < i && bp[k] == v) { \
+ curval += !is_##TPE##_nil(bp[k]); \
k++; \
- curval += !is_##TPE##_nil(bp[k]); \
} \
for (; j < k; j++) \
rb[j] = curval; \
@@ -1106,7 +1102,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
} \
} while (0)
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE,
NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \
do { \
curval = 0; \
if (count_all) { \
@@ -1114,9 +1110,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
TPE v = bp[j]; \
l = j--; \
curval++; \
- while (j >= k && (bp[j] == v NAN_CHECK(TPE,
j))) { \
+ while (j >= k && bp[j] == v) { \
+ curval++; \
j--; \
- curval++; \
} \
m = MAX(k, j); \
for (; l >= m; l--) \
@@ -1127,9 +1123,9 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
TPE v = bp[j]; \
l = j--; \
curval += !is_##TPE##_nil(bp[j]); \
- while (j >= k && (bp[j] == v NAN_CHECK(TPE,
j))) { \
+ while (j >= k && bp[j] == v) { \
+ curval += !is_##TPE##_nil(bp[j]); \
j--; \
- curval += !is_##TPE##_nil(bp[j]); \
} \
m = MAX(k, j); \
for (; l >= m; l--) \
@@ -1139,7 +1135,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
k = i; \
} while (0)
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE) \
do { \
if (count_all) { \
curval = i - k; \
@@ -1154,7 +1150,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
} \
} while (0)
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE) \
do { \
if (count_all) { \
for (; k < i; k++) \
@@ -1165,7 +1161,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
} \
} while (0)
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE, NAN_CHECK) \
+#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE) \
do { \
if (count_all) { \
for (; k < i; k++) \
@@ -1194,8 +1190,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
j = k++; \
curval++; \
while (k < i && cmp(base + ((const
var_t *) bheap)[k], v) == 0) { \
+ curval++; \
k++; \
- curval++; \
} \
for (; j < k; j++) \
rb[j] = curval; \
@@ -1206,8 +1202,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
j = k++; \
curval++; \
while (k < i && cmp(Tloc(b, k), v) ==
0) { \
+ curval++; \
k++; \
- curval++; \
} \
for (; j < k; j++) \
rb[j] = curval; \
@@ -1220,8 +1216,8 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
j = k++; \
curval += cmp(v, nil) != 0; \
while (k < i && cmp(base + ((const
var_t *) bheap)[k], v) == 0) { \
+ curval += cmp(base + ((const
var_t *) bheap)[k], nil) != 0; \
k++; \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list