Changeset: 789c83c11d6c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=789c83c11d6c
Modified Files:
        sql/server/rel_select.c
Branch: default
Log Message:

fallback to aggr when we find a aggr (binary) function


diffs (32 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -3628,15 +3628,28 @@ rel_binop(mvc *sql, sql_rel **rel, symbo
        char *sname = qname_schema(dl->data.lval);
        sql_schema *s = sql->session->schema;
        exp_kind iek = {type_value, card_column, FALSE};
+       int type = (ek.card == card_none)?F_PROC:F_FUNC;
 
        l = rel_value_exp(sql, rel, dl->next->data.sym, f, iek);
        r = rel_value_exp(sql, rel, dl->next->next->data.sym, f, iek);
+       if (!l && !r) { /* possibly we cannot resolve the argument as the 
function maybe an aggregate */
+               /* reset error */
+               sql->session->status = 0;
+               sql->errstr[0] = '\0';
+               return rel_aggr(sql, rel, se, f);
+       }
 
        if (!l || !r) 
                return NULL;
 
        if (sname)
                s = mvc_bind_schema(sql, sname);
+
+       if (type == F_FUNC) {
+               sql_subfunc *func = sql_find_func(sql->sa, s, fname, 2, F_AGGR);
+               if (func)
+                       return _rel_aggr(sql, rel, 0, s, fname, dl->next, f);
+       }
        return rel_binop_(sql, l, r, s, fname, ek.card);
 }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to