Changeset: 9e0af71042f9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9e0af71042f9 Modified Files: sql/backends/monet5/sql_upgrades.c sql/common/sql_types.c sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_select.c sql/server/rel_updates.c sql/storage/store.c Branch: privfuncs Log Message:
Merged with default
diffs (truncated from 50460 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -753,3 +753,4 @@ 9fbec5dab8167d2189582fbe75e5f9c8bef82380
97e76b882f9fb28327393d21708fb22f2f6c22f1 Jan2022_7
f458e1c71c73d6bd9636369c1406eadb74f016bf Jan2022_9
f458e1c71c73d6bd9636369c1406eadb74f016bf Jan2022_SP1_release
+00463fdd0d51d7ce058549a82bc74efaea6035a2 Jul2021_15
diff --git a/clients/Tests/melcheck.sh b/clients/Tests/melcheck.sh
--- a/clients/Tests/melcheck.sh
+++ b/clients/Tests/melcheck.sh
@@ -1,3 +1,3 @@
#!/bin/sh
cd $TSTSRCBASE
-hg -q files -I '{monetdb5,sql,geom}/**.[ch]' -X '**/Tests/**' | python -c
'import MonetDBtesting.melcheck'
+hg -q files -I '{monetdb5,sql,geom}/**.[ch]' -X '**/Tests/**' | python3 -c
'import MonetDBtesting.melcheck'
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2615,8 +2615,10 @@ doFile(Mapi mid, stream *fp, bool useins
}
q += snprintf(q, endq - q, "
ORDER BY fullname, type, remark");
+#ifdef HAVE_POPEN
stream *saveFD;
start_pager(&saveFD);
+#endif
hdl = mapi_query(mid, query);
free(query);
@@ -2650,7 +2652,9 @@ doFile(Mapi mid, stream *fp, bool useins
}
mapi_close_handle(hdl);
hdl = NULL;
+#ifdef HAVE_POPEN
end_pager(saveFD);
+#endif
}
continue;
}
diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt
--- a/gdk/CMakeLists.txt
+++ b/gdk/CMakeLists.txt
@@ -40,6 +40,7 @@ target_sources(bat
PRIVATE
gdk_select.c
gdk_calc.c gdk_calc.h
+ gdk_calc_addsub.c gdk_calc_muldiv.c gdk_calc_convert.c gdk_calc_compare.c
gdk_calc_compare.h gdk_calc_private.h
gdk_ssort.c gdk_ssort_impl.h
gdk_aggr.c
@@ -80,6 +81,7 @@ target_sources(bat
gdk_firstn.c
gdk_subquery.c gdk_subquery.h
gdk_analytic_bounds.c
+ gdk_analytic_statistics.c
gdk_analytic_func.c
gdk_analytic.h
gdk_tracer.c gdk_tracer.h
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
@@ -2537,1423 +2537,3 @@ nosupport:
res = GDK_FAIL;
goto cleanup;
}
-
-#ifdef HAVE_HGE
-#define LNG_HGE hge
-#define GDK_LNG_HGE_max GDK_hge_max
-#define LNG_HGE_nil hge_nil
-#else
-#define LNG_HGE lng
-#define GDK_LNG_HGE_max GDK_lng_max
-#define LNG_HGE_nil lng_nil
-#endif
-
-/* average on integers */
-#define ANALYTICAL_AVERAGE_CALC_NUM_STEP1(TPE, IMP, ARG) \
- if (!is_##TPE##_nil(ARG)) { \
- ADD_WITH_CHECK(ARG, sum, LNG_HGE, sum, GDK_LNG_HGE_max, goto
avg_overflow##TPE##IMP); \
- /* count only when no overflow occurs */ \
- n++; \
- }
-
-#define ANALYTICAL_AVERAGE_CALC_NUM_STEP2(TPE, IMP) \
- if (0) { \
-avg_overflow##TPE##IMP: \
- assert(n > 0); \
- if (sum >= 0) { \
- a = (TPE) (sum / n); \
- rr = (lng) (sum % n); \
- } else { \
- sum = -sum; \
- a = - (TPE) (sum / n); \
- rr = (lng) (sum % n); \
- if (r) { \
- a--; \
- rr = n - rr; \
- } \
- }
-
-#define ANALYTICAL_AVG_IMP_NUM_UNBOUNDED_TILL_CURRENT_ROW(TPE, IMP) \
- do { \
- TPE a = 0; \
- dbl curval = dbl_nil; \
- for (; k < i;) { \
- j = k; \
- do { \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP1(TPE, IMP,
bp[k]) \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP2(TPE, IMP) \
- while (k < i && !op[k]) { \
- TPE v = bp[k++]; \
- if (is_##TPE##_nil(v)) \
- continue; \
- AVERAGE_ITER(TPE, v, a, rr, n);
\
- } \
- curval = a + (dbl) rr / n; \
- goto calc_done##TPE##IMP; \
- } \
- k++; \
- } while (k < i && !op[k]); \
- curval = n > 0 ? (dbl) sum / n : dbl_nil; \
-calc_done##TPE##IMP: \
- for (; j < k; j++) \
- rb[j] = curval; \
- has_nils |= (n == 0); \
- } \
- n = 0; \
- sum = 0; \
- } while (0)
-
-#define ANALYTICAL_AVG_IMP_NUM_CURRENT_ROW_TILL_UNBOUNDED(TPE, IMP) \
- do { \
- TPE a = 0; \
- dbl curval = dbl_nil; \
- l = i - 1; \
- for (j = l; ; j--) { \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP1(TPE, IMP, bp[j]) \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP2(TPE, IMP) \
- while (!(op[j] || j == k)) { \
- TPE v = bp[j--]; \
- if (is_##TPE##_nil(v)) \
- continue; \
- AVERAGE_ITER(TPE, v, a, rr, n); \
- } \
- curval = a + (dbl) rr / n; \
- goto calc_done##TPE##IMP; \
- } \
- if (op[j] || j == k) { \
- curval = n > 0 ? (dbl) sum / n : dbl_nil; \
-calc_done##TPE##IMP: \
- for (; ; l--) { \
- rb[l] = curval; \
- if (l == j) \
- break; \
- } \
- has_nils |= (n == 0); \
- if (j == k) \
- break; \
- l = j - 1; \
- } \
- } \
- n = 0; \
- sum = 0; \
- k = i; \
- } while (0)
-
-#define ANALYTICAL_AVG_IMP_NUM_ALL_ROWS(TPE, IMP) \
- do { \
- TPE a = 0; \
- for (; j < i; j++) { \
- TPE v = bp[j]; \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP1(TPE, IMP, v) \
- ANALYTICAL_AVERAGE_CALC_NUM_STEP2(TPE, IMP) \
- for (; j < i; j++) { \
- v = bp[j]; \
- if (is_##TPE##_nil(v)) \
- continue; \
- AVERAGE_ITER(TPE, v, a, rr, n); \
- } \
- curval = a + (dbl) rr / n; \
- goto calc_done##TPE##IMP; \
- } \
- } \
- curval = n > 0 ? (dbl) sum / n : dbl_nil; \
-calc_done##TPE##IMP: \
- for (; k < i; k++) \
- rb[k] = curval; \
- has_nils |= (n == 0); \
- n = 0; \
- sum = 0; \
- } while (0)
-
-#define ANALYTICAL_AVG_IMP_NUM_CURRENT_ROW(TPE, IMP) \
- do { \
- for (; k < i; k++) { \
- TPE v = bp[k]; \
- if (is_##TPE##_nil(v)) { \
- rb[k] = dbl_nil; \
- has_nils = true; \
- } else { \
- rb[k] = (dbl) v; \
- } \
- } \
- } while (0)
-
-#define avg_num_deltas(TPE) typedef struct avg_num_deltas##TPE { TPE a; lng n;
lng rr;} avg_num_deltas##TPE;
-avg_num_deltas(bte)
-avg_num_deltas(sht)
-avg_num_deltas(int)
-avg_num_deltas(lng)
-
-#define INIT_AGGREGATE_AVG_NUM(TPE, NOTHING1, NOTHING2) \
- do { \
- computed = (avg_num_deltas##TPE) {0}; \
- } while (0)
-#define COMPUTE_LEVEL0_AVG_NUM(X, TPE, NOTHING1, NOTHING2) \
- do { \
- TPE v = bp[j + X]; \
- computed = is_##TPE##_nil(v) ? (avg_num_deltas##TPE){0} :
(avg_num_deltas##TPE) {.a = v, .n = 1}; \
- } while (0)
-#define COMPUTE_LEVELN_AVG_NUM(VAL, TPE, NOTHING1, NOTHING2) \
- do { \
- if (VAL.n) \
- AVERAGE_ITER(TPE, VAL.a, computed.a, computed.rr,
computed.n); \
- } while (0)
-#define FINALIZE_AGGREGATE_AVG_NUM(TPE, NOTHING1, NOTHING2) \
- do { \
- if (computed.n == 0) { \
- rb[k] = dbl_nil; \
- has_nils = true; \
- } else { \
- rb[k] = computed.a + (dbl) computed.rr / computed.n; \
- } \
- } while (0)
-#define ANALYTICAL_AVG_IMP_NUM_OTHERS(TPE, IMP)
\
- do { \
- oid ncount = i - k; \
- if ((res = GDKrebuild_segment_tree(ncount,
sizeof(avg_num_deltas##TPE), st, &segment_tree, &levels_offset, &nlevels)) !=
GDK_SUCCEED) \
- goto cleanup; \
- populate_segment_tree(avg_num_deltas##TPE, ncount,
INIT_AGGREGATE_AVG_NUM, COMPUTE_LEVEL0_AVG_NUM, COMPUTE_LEVELN_AVG_NUM, TPE,
NOTHING, NOTHING); \
- for (; k < i; k++) \
- compute_on_segment_tree(avg_num_deltas##TPE, start[k] -
j, end[k] - j, INIT_AGGREGATE_AVG_NUM, COMPUTE_LEVELN_AVG_NUM,
FINALIZE_AGGREGATE_AVG_NUM, TPE, NOTHING, NOTHING); \
- j = k; \
- } while (0)
-
-/* average on floating-points */
-#define ANALYTICAL_AVG_IMP_FP_UNBOUNDED_TILL_CURRENT_ROW(TPE, IMP) \
- do { \
- TPE a = 0; \
- dbl curval = dbl_nil; \
- for (; k < i;) { \
- j = k; \
- do { \
- if (!is_##TPE##_nil(bp[k])) \
- AVERAGE_ITER_FLOAT(TPE, bp[k], a, n); \
- k++; \
- } while (k < i && !op[k]); \
- if (n > 0) \
- curval = a; \
- else \
- has_nils = true; \
- for (; j < k; j++) \
- rb[j] = curval; \
- } \
- n = 0; \
- } while (0)
-
-#define ANALYTICAL_AVG_IMP_FP_CURRENT_ROW_TILL_UNBOUNDED(TPE, IMP) \
- do { \
- TPE a = 0; \
- dbl curval = dbl_nil; \
- l = i - 1; \
- for (j = l; ; j--) { \
- if (!is_##TPE##_nil(bp[j])) \
- AVERAGE_ITER_FLOAT(TPE, bp[j], a, n); \
- if (op[j] || j == k) { \
- for (; ; l--) { \
- rb[l] = curval; \
- if (l == j) \
- break; \
- } \
- has_nils |= is_##TPE##_nil(curval); \
- if (j == k) \
- break; \
- l = j - 1; \
- } \
- } \
- n = 0; \
- k = i; \
- } while (0)
-
-#define ANALYTICAL_AVG_IMP_FP_ALL_ROWS(TPE, IMP) \
- do { \
- TPE a = 0; \
- dbl curval = dbl_nil; \
- for (; j < i; j++) { \
- TPE v = bp[j]; \
- if (!is_##TPE##_nil(v)) \
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
