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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to