Changeset: 6a406bfa0027 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6a406bfa0027
Modified Files:
        gdk/gdk_analytic_func.c
        sql/backends/monet5/sql_rank.c
Branch: window-tunning
Log Message:

Reduced number of cases for count and updated number of arguments check


diffs (truncated from 405 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
@@ -1070,7 +1070,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) \
+#define ANALYTICAL_COUNT_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE) \
        do { \
                curval = 0; \
                if (count_all) { \
@@ -1098,7 +1098,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                }       \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \
+#define ANALYTICAL_COUNT_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \
        do { \
                curval = 0; \
                if (count_all) { \
@@ -1129,7 +1129,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                k = i; \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE) \
+#define ANALYTICAL_COUNT_FIXED_ALL_ROWS(TPE) \
        do { \
                if (count_all) { \
                        curval = i - k; \
@@ -1144,7 +1144,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                }       \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE) \
+#define ANALYTICAL_COUNT_FIXED_CURRENT_ROW(TPE) \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
@@ -1155,7 +1155,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
                } \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE) \
+#define ANALYTICAL_COUNT_FIXED_OTHERS(TPE) \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
@@ -1174,240 +1174,163 @@ ANALYTICAL_MIN_MAX(max, MAX, <)
        } while (0)
 
 /* Counting no nils for other types */
-#define ANALYTICAL_COUNT_NO_NIL_OTHERS_UNBOUNDED_TILL_CURRENT_ROW \
+#define ANALYTICAL_COUNT_OTHERS_UNBOUNDED_TILL_CURRENT_ROW \
        do { \
                curval = 0; \
                if (count_all) { \
-                       if (isvarsized) { \
-                               for (; k < i; ) { \
-                                       j = k++; \
+                       for (; k < i; ) { \
+                               j = k++; \
+                               curval++; \
+                               while (k < i && !op[k]) { \
                                        curval++; \
-                                       while (k < i && !op[k]) { \
-                                               curval++; \
-                                               k++; \
-                                       } \
-                                       for (; j < k; j++) \
-                                               rb[j] = curval; \
+                                       k++; \
                                } \
-                       } else { \
-                               for (; k < i; ) { \
-                                       j = k++; \
-                                       curval++; \
-                                       while (k < i && !op[k]) { \
-                                               curval++; \
-                                               k++; \
-                                       } \
-                                       for (; j < k; j++) \
-                                               rb[j] = curval; \
-                               } \
+                               for (; j < k; j++) \
+                                       rb[j] = curval; \
                        } \
                } else { \
-                       if (isvarsized) { \
-                               for (; k < i; ) { \
-                                       j = k++; \
-                                       const void *v = base + ((const var_t *) 
bheap)[j]; \
-                                       curval += cmp(v, nil) != 0; \
-                                       while (k < i && !op[k]) { \
-                                               curval += cmp(base + ((const 
var_t *) bheap)[k], nil) != 0; \
-                                               k++; \
-                                       } \
-                                       for (; j < k; j++) \
-                                               rb[j] = curval; \
+                       for (; k < i; ) { \
+                               j = k++; \
+                               const void *v = BUNtail(bpi, j); \
+                               curval += cmp(v, nil) != 0; \
+                               while (k < i && !op[k]) { \
+                                       curval += cmp(BUNtail(bpi, k), nil) != 
0; \
+                                       k++; \
                                } \
-                       } else { \
-                               for (; k < i; ) { \
-                                       j = k++; \
-                                       const void *v = BUNtail(bpi, j); \
-                                       curval += cmp(v, nil) != 0; \
-                                       while (k < i && !op[k]) { \
-                                               curval += cmp(BUNtail(bpi, k), 
nil) != 0; \
-                                               k++; \
-                                       } \
-                                       for (; j < k; j++) \
-                                               rb[j] = curval; \
-                               } \
+                               for (; j < k; j++) \
+                                       rb[j] = curval; \
                        } \
                }       \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_OTHERS_CURRENT_ROW_TILL_UNBOUNDED \
+#define ANALYTICAL_COUNT_OTHERS_CURRENT_ROW_TILL_UNBOUNDED \
        do { \
                curval = 0; \
                if (count_all) { \
-                       if (isvarsized) { \
-                               for (j = i - 1; j >= k; ) { \
-                                       l = j--; \
+                       for (j = i - 1; j >= k; ) { \
+                               l = j--; \
+                               curval++; \
+                               while (j >= k && !op[j]) { \
                                        curval++; \
-                                       while (j >= k && !op[j]) { \
-                                               curval++; \
-                                               j--; \
-                                       } \
-                                       m = MAX(k, j); \
-                                       for (; l >= m; l--) \
-                                               rb[l] = curval; \
-                               }       \
-                       } else { \
-                               for (j = i - 1; j >= k; ) { \
-                                       l = j--; \
-                                       curval++; \
-                                       while (j >= k && !op[j]) { \
-                                               curval++; \
-                                               j--; \
-                                       } \
-                                       m = MAX(k, j); \
-                                       for (; l >= m; l--) \
-                                               rb[l] = curval; \
-                               }       \
-                       } \
+                                       j--; \
+                               } \
+                               m = MAX(k, j); \
+                               for (; l >= m; l--) \
+                                       rb[l] = curval; \
+                       }       \
                } else { \
-                       if (isvarsized) { \
-                               for (j = i - 1; j >= k; ) { \
-                                       l = j--; \
-                                       const void *v = base + ((const var_t *) 
bheap)[l]; \
-                                       curval += cmp(v, nil) != 0; \
-                                       while (j >= k && !op[j]) { \
-                                               curval += cmp(base + ((const 
var_t *) bheap)[j], nil) != 0; \
-                                               j--; \
-                                       } \
-                                       m = MAX(k, j); \
-                                       for (; l >= m; l--) \
-                                               rb[l] = curval; \
-                               }       \
-                       } else { \
-                               for (j = i - 1; j >= k; ) { \
-                                       l = j--; \
-                                       const void *v = Tloc(b, l); \
-                                       curval += cmp(v, nil) != 0; \
-                                       while (j >= k && !op[j]) { \
-                                               curval += cmp(BUNtail(bpi, j), 
nil) != 0; \
-                                               j--; \
-                                       } \
-                                       m = MAX(k, j); \
-                                       for (; l >= m; l--) \
-                                               rb[l] = curval; \
-                               }       \
-                       } \
-               } \
+                       for (j = i - 1; j >= k; ) { \
+                               l = j--; \
+                               const void *v = Tloc(b, l); \
+                               curval += cmp(v, nil) != 0; \
+                               while (j >= k && !op[j]) { \
+                                       curval += cmp(BUNtail(bpi, j), nil) != 
0; \
+                                       j--; \
+                               } \
+                               m = MAX(k, j); \
+                               for (; l >= m; l--) \
+                                       rb[l] = curval; \
+                       }       \
+       } \
                k = i; \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_OTHERS_ALL_ROWS        \
+#define ANALYTICAL_COUNT_OTHERS_ALL_ROWS       \
        do { \
                curval = 0; \
                if (count_all) { \
                        curval = i - k; \
                } else {        \
-                       if (isvarsized) { \
-                               for (; j < i; j++) \
-                                       curval += cmp(nil, base + ((const var_t 
*) bheap)[j]) != 0; \
-                       } else { \
-                               for (; j < i; j++) \
-                                       curval += cmp(BUNtail(bpi, j), nil) != 
0; \
-                       } \
+                       for (; j < i; j++) \
+                               curval += cmp(BUNtail(bpi, j), nil) != 0; \
                }       \
                for (; k < i; k++) \
                        rb[k] = curval; \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_OTHERS_CURRENT_ROW     \
+#define ANALYTICAL_COUNT_OTHERS_CURRENT_ROW    \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
                                rb[k] = 1; \
                } else { \
-                       if (isvarsized) { \
-                               for (; k < i; k++) \
-                                       rb[k] = cmp(nil, base + ((const var_t 
*) bheap)[k]) != 0; \
-                       } else { \
-                               for (; k < i; k++) \
-                                       rb[k] = cmp(BUNtail(bpi, k), nil) != 0; 
\
-                       } \
+                       for (; k < i; k++) \
+                               rb[k] = cmp(BUNtail(bpi, k), nil) != 0; \
                } \
        } while (0)
 
-#define ANALYTICAL_COUNT_NO_NIL_OTHERS_OTHERS  \
+#define ANALYTICAL_COUNT_OTHERS_OTHERS \
        do { \
                if (count_all) { \
                        for (; k < i; k++) \
                                rb[k] = (end[k] > start[k]) ? (end[k] - 
start[k]) : 0; \
                } else {        \
                        curval = 0; \
-                       if (isvarsized) { \
-                               for (; k < i; k++) { \
-                                       j = start[k]; \
-                                       l = end[k]; \
-                                       for (; j < l; j++) \
-                                               curval += cmp(nil, base + 
((const var_t *) bheap)[j]) != 0; \
-                                       rb[k] = curval; \
-                                       curval = 0; \
-                               } \
-                       } else { \
-                               for (; k < i; k++) { \
-                                       j = start[k]; \
-                                       l = end[k]; \
-                                       for (; j < l; j++) \
-                                               curval += cmp(BUNtail(bpi, j), 
nil) != 0; \
-                                       rb[k] = curval; \
-                                       curval = 0; \
-                               } \
+                       for (; k < i; k++) { \
+                               j = start[k]; \
+                               l = end[k]; \
+                               for (; j < l; j++) \
+                                       curval += cmp(BUNtail(bpi, j), nil) != 
0; \
+                               rb[k] = curval; \
+                               curval = 0; \
                        } \
                }       \
        } while (0)
 
 /* Now do the count analytic function branches */
-#define ANALYTICAL_COUNT_NO_NIL_FIXED_PARTITIONS(TPE, IMP)             \
+#define ANALYTICAL_COUNT_FIXED_PARTITIONS(TPE, IMP)            \
        do {                                    \
                TPE *bp = (TPE*) bheap; \
                if (p) {                                        \
                        for (; i < cnt; i++) {          \
                                if (np[i])                      \
-                                       
ANALYTICAL_COUNT_NO_NIL_FIXED_##IMP(TPE); \
+                                       ANALYTICAL_COUNT_FIXED_##IMP(TPE); \
                        }                                               \
                }       \
                i = cnt;                        \
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to