Changeset: 7016ddcd38f6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7016ddcd38f6
Modified Files:
        sql/server/rel_dump.c
Branch: default
Log Message:

Added defensive lines and cleanup


diffs (72 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1238,6 +1238,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                                                }
                                        }
 
+                                       if (sname && !mvc_bind_schema(sql, 
sname))
+                                               return sql_error(sql, 
ERR_NOTFOUND, SQLSTATE(3F000) "No such schema '%s'\n", sname);
                                        if (!(f = sql_bind_func_(sql, sname, 
fname, tl, F_FILT)))
                                                return sql_error(sql, 
ERR_NOTFOUND, SQLSTATE(42000) "Filter: missing function '%s'.'%s'\n", sname, 
fname);
                                        if (!execute_priv(sql, f->func))
@@ -1335,33 +1337,29 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                }
        }
        if (r[*pos] == '(') {
-               sql_schema *s;
                sql_subfunc *f = NULL;
-               sql_subfunc *a = NULL;
-               node *n;
 
                if (!(exps = read_exps(sql, lrel, rrel, top_exps, r, pos, '(', 
0, 0)))
                        return NULL;
                tname = b;
                *e = 0;
                convertIdent(tname);
-               s = mvc_bind_schema(sql, tname);
-               if (tname && !s)
-                       return sql_error(sql, ERR_NOTFOUND, SQLSTATE(42000) 
"Schema %s not found\n", tname);
+               if (tname && !mvc_bind_schema(sql, tname))
+                       return sql_error(sql, ERR_NOTFOUND, SQLSTATE(3F000) "No 
such schema '%s'\n", tname);
                if (grp) {
                        if (exps && exps->h) {
                                list *ops = sa_list(sql->sa);
-                               for( n = exps->h; n; n = n->next)
+                               for( node *n = exps->h; n; n = n->next)
                                        append(ops, exp_subtype(n->data));
-                               a = sql_bind_func_(sql, tname, cname, ops, 
F_AGGR);
+                               f = sql_bind_func_(sql, tname, cname, ops, 
F_AGGR);
                        } else {
-                               a = sql_bind_func(sql, tname, cname, 
sql_bind_localtype("void"), NULL, F_AGGR); /* count(*) */
+                               f = sql_bind_func(sql, tname, cname, 
sql_bind_localtype("void"), NULL, F_AGGR); /* count(*) */
                        }
-                       if (!a)
+                       if (!f)
                                return function_error_string(sql, tname, cname, 
exps, false, F_AGGR);
-                       if (!execute_priv(sql, a->func))
+                       if (!execute_priv(sql, f->func))
                                return function_error_string(sql, tname, cname, 
exps, true, F_AGGR);
-                       exp = exp_aggr( sql->sa, exps, a, unique, no_nils, 
CARD_ATOM, 1);
+                       exp = exp_aggr(sql->sa, exps, f, unique, no_nils, 
CARD_ATOM, 1);
                        if (zero_if_empty)
                                set_zero_if_empty(exp);
                } else {
@@ -1377,7 +1375,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                                }
                        } else {
                                list *ops = sa_list(sql->sa);
-                               for( n = exps->h; n; n = n->next)
+                               for( node *n = exps->h; n; n = n->next)
                                        append(ops, exp_subtype(n->data));
 
                                f = sql_bind_func_(sql, tname, cname, ops, 
F_FUNC);
@@ -1855,6 +1853,8 @@ rel_read(mvc *sql, char *r, int *pos, li
                                if (!(inputs = read_exps(sql, lrel, NULL, NULL, 
r, pos, '(', 0, 1)))
                                        return NULL;
 
+                               if (!mvc_bind_schema(sql, sname))
+                                       return sql_error(sql, ERR_NOTFOUND, 
SQLSTATE(3F000) "No such schema '%s'\n", sname);
                                if (!(tudf = find_table_function(sql, sname, 
tname, list_empty(inputs) ? NULL : inputs, list_empty(inputs) ? NULL : 
exp_types(sql->sa, inputs), F_UNION)))
                                        return NULL;
                                sf = tudf->f;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to