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

first resolve aggregation function before normal plain function.


diffs (36 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
@@ -2599,7 +2599,7 @@ rel_unop(mvc *sql, sql_rel **rel, symbol
        char *sname = qname_schema(l->data.lval);
        sql_schema *s = sql->session->schema;
        exp_kind iek = {type_value, card_column, FALSE};
-       sql_exp *e = rel_value_exp(sql, rel, l->next->data.sym, fs, iek);
+       sql_exp *e = NULL;
        sql_subfunc *f = NULL;
        sql_subtype *t = NULL;
        int type = (ek.card == card_none)?F_PROC:F_FUNC;
@@ -2609,14 +2609,16 @@ rel_unop(mvc *sql, sql_rel **rel, symbol
 
        if (!s)
                return NULL;
-       if (!e)
-               f = find_func(sql, s, fname, 1, F_AGGR, NULL);
-       if (!e && f) { /* 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, fs);
+       f = find_func(sql, s, fname, 1, F_AGGR, NULL);
+       if (f) { 
+               e = rel_aggr(sql, rel, se, fs);
+               if (e)
+                       return e;
        }
+       /* reset error */
+       sql->session->status = 0;
+       sql->errstr[0] = '\0';
+               e = rel_value_exp(sql, rel, l->next->data.sym, fs, iek);
        if (!e)
                return NULL;
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to