Changeset: 02e09ae5e0e9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/02e09ae5e0e9
Modified Files:
sql/backends/monet5/rel_physical.c
Branch: ordered-set-aggregates
Log Message:
properly check for median in the physical optimizer
diffs (28 lines):
diff --git a/sql/backends/monet5/rel_physical.c
b/sql/backends/monet5/rel_physical.c
--- a/sql/backends/monet5/rel_physical.c
+++ b/sql/backends/monet5/rel_physical.c
@@ -17,8 +17,9 @@
#include "rel_exp.h"
#include "rel_rel.h"
-#define IS_ORDER_BASED_AGGR(name) (strcmp((name), "quantile") == 0 ||
strcmp((name), "quantile_avg") == 0 || \
- strcmp((name), "median") == 0 ||
strcmp((name), "median_avg") == 0)
+#define IS_ORDER_BASED_AGGR(fname, argc) (\
+ (argc == 2 && (strcmp((fname), "quantile") == 0
|| strcmp((fname), "quantile_avg") == 0)) || \
+ (argc == 1 && (strcmp((fname), "median") == 0
|| strcmp((fname), "median_avg") == 0)))
static sql_rel *
rel_add_orderby(visitor *v, sql_rel *rel)
@@ -31,10 +32,10 @@ rel_add_orderby(visitor *v, sql_rel *rel
if (is_aggr(e->type)) {
sql_subfunc *af = e->f;
- list *aa = e->l;
+ list *aa = e->l;
/* for now we only handle one sort
order */
- if
(IS_ORDER_BASED_AGGR(af->func->base.name) && aa && list_length(aa) == 2) {
+ if (aa &&
IS_ORDER_BASED_AGGR(af->func->base.name, list_length(aa))) {
sql_exp *nobe = aa->h->data;
if (nobe && !obe) {
sql_rel *l = rel->l =
rel_project(v->sql->sa, rel->l, rel_projections(v->sql, rel->l, NULL, 1, 1));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]