Changeset: 96aad2d73686 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=96aad2d73686
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/include/sql_catalog.h
        sql/server/rel_psm.c
Branch: default
Log Message:

Re-use macro in the MAL backend


diffs (203 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -698,27 +698,24 @@ static str
 drop_func(mvc *sql, char *sname, char *name, sqlid fid, sql_ftype type, int 
action)
 {
        sql_schema *s = cur_schema(sql);
-       char is_aggr = (type == F_AGGR);
-       char is_func = (type != F_PROC);
-       char *F = is_aggr ? "AGGREGATE" : (is_func ? "FUNCTION" : "PROCEDURE");
-       char *f = is_aggr ? "aggregate" : (is_func ? "function" : "procedure");
-       char *KF = type == F_FILT ? "FILTER " : type == F_UNION ? "UNION " : "";
-       char *kf = type == F_FILT ? "filter " : type == F_UNION ? "union " : "";
+       char *F = NULL, *fn = NULL;
+
+       FUNC_TYPE_STR(type)
 
        if (sname && !(s = mvc_bind_schema(sql, sname))) {
                if (fid == -2) /* if exists option */
                        return MAL_SUCCEED;
-               throw(SQL,"sql.drop_func", SQLSTATE(3F000) "DROP %s%s: no such 
schema '%s'", KF, F, sname);
+               throw(SQL,"sql.drop_func", SQLSTATE(3F000) "DROP %s: no such 
schema '%s'", F, sname);
        }
        if (!mvc_schema_privs(sql, s))
-               throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s%s: access 
denied for %s to schema '%s'", KF, F, stack_get_string(sql, "current_user"), 
s->base.name);
+               throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s: access 
denied for %s to schema '%s'", F, stack_get_string(sql, "current_user"), 
s->base.name);
        if (fid >= 0) {
                node *n = find_sql_func_node(s, fid);
                if (n) {
                        sql_func *func = n->data;
 
                        if (!action && mvc_check_dependency(sql, func->base.id, 
!IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, NULL))
-                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, 
func->base.name);
+                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s: there are database objects dependent on %s %s;", F, fn, 
func->base.name);
                        if (mvc_drop_func(sql, s, func, action))
                                throw(SQL,"sql.drop_func", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                }
@@ -734,7 +731,7 @@ drop_func(mvc *sql, char *sname, char *n
 
                        if (!action && mvc_check_dependency(sql, func->base.id, 
!IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, list_func)) {
                                list_destroy(list_func);
-                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, 
func->base.name);
+                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s: there are database objects dependent on %s %s;", F, fn, 
func->base.name);
                        }
                }
                res = mvc_drop_all_func(sql, s, list_func, action);
@@ -750,24 +747,24 @@ create_func(mvc *sql, char *sname, char 
 {
        sql_func *nf;
        sql_schema *s = cur_schema(sql);
-       char is_aggr = (f->type == F_AGGR);
-       char is_func = (f->type != F_PROC);
-       char *F = is_aggr ? "AGGREGATE" : (is_func ? "FUNCTION" : "PROCEDURE");
-       char *KF = f->type == F_FILT ? "FILTER " : f->type == F_UNION ? "UNION 
" : "";
        int clientid = sql->clientid;
+       char *F = NULL, *fn = NULL;
+
+       FUNC_TYPE_STR(f->type)
 
-       (void)fname;
+       (void) fname;
+       (void) fn;
        if (sname && !(s = mvc_bind_schema(sql, sname)))
-               throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE %s%s: no 
such schema '%s'", KF, F, sname);
+               throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE %s: no 
such schema '%s'", F, sname);
        if (!mvc_schema_privs(sql, s))
-               throw(SQL,"sql.create_func", SQLSTATE(42000) "CREATE %s%s: 
access denied for %s to schema '%s'", KF, F, stack_get_string(sql, 
"current_user"), s->base.name);
+               throw(SQL,"sql.create_func", SQLSTATE(42000) "CREATE %s: access 
denied for %s to schema '%s'", F, stack_get_string(sql, "current_user"), 
s->base.name);
        nf = mvc_create_func(sql, NULL, s, f->base.name, f->ops, f->res, 
f->type, f->lang, f->mod, f->imp, f->query, f->varres, f->vararg, f->system);
        assert(nf);
        switch (nf->lang) {
        case FUNC_LANG_INT:
        case FUNC_LANG_MAL: /* shouldn't be reachable, but leave it here */
                if (!backend_resolve_function(&clientid, nf))
-                       throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE 
%s%s: external name %s.%s not bound", KF, F, nf->mod, nf->base.name);
+                       throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE 
%s: external name %s.%s not bound", F, nf->mod, nf->base.name);
                if (nf->query == NULL)
                        break;
                /* fall through */
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -366,6 +366,40 @@ typedef enum sql_ftype {
 #define IS_ANALYTIC(f) ((f)->type == F_ANALYTIC)
 #define IS_LOADER(f)   ((f)->type == F_LOADER)
 
+#define FUNC_TYPE_STR(type) \
+       switch (type) { \
+               case F_FUNC: \
+                       F = "FUNCTION"; \
+                       fn = "function"; \
+                       break; \
+               case F_PROC: \
+                       F = "PROCEDURE"; \
+                       fn = "procedure"; \
+                       break; \
+               case F_AGGR: \
+                       F = "AGGREGATE"; \
+                       fn = "aggregate"; \
+                       break; \
+               case F_FILT: \
+                       F = "FILTER FUNCTION"; \
+                       fn = "filter function"; \
+                       break; \
+               case F_UNION: \
+                       F = "UNION FUNCTION"; \
+                       fn = "union function"; \
+                       break; \
+               case F_ANALYTIC: \
+                       F = "WINDOW FUNCTION"; \
+                       fn = "window function"; \
+                       break; \
+               case F_LOADER: \
+                       F = "LOADER FUNCTION"; \
+                       fn = "loader function"; \
+                       break; \
+               default: \
+                       assert(0); \
+       }
+
 typedef enum sql_flang {
        FUNC_LANG_INT = 0, /* internal */
        FUNC_LANG_MAL = 1, /* create sql external mod.func */
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -16,40 +16,6 @@
 #include "rel_updates.h"
 #include "sql_privileges.h"
 
-#define FUNC_TYPE_STR \
-       switch (type) { \
-               case F_FUNC: \
-                       F = "FUNCTION"; \
-                       fn = "function"; \
-                       break; \
-               case F_PROC: \
-                       F = "PROCEDURE"; \
-                       fn = "procedure"; \
-                       break; \
-               case F_AGGR: \
-                       F = "AGGREGATE"; \
-                       fn = "aggregate"; \
-                       break; \
-               case F_FILT: \
-                       F = "FILTER FUNCTION"; \
-                       fn = "filter function"; \
-                       break; \
-               case F_UNION: \
-                       F = "UNION FUNCTION"; \
-                       fn = "union function"; \
-                       break; \
-               case F_ANALYTIC: \
-                       F = "WINDOW FUNCTION"; \
-                       fn = "window function"; \
-                       break; \
-               case F_LOADER: \
-                       F = "LOADER FUNCTION"; \
-                       fn = "loader function"; \
-                       break; \
-               default: \
-                       assert(0); \
-       }
-
 static list *sequential_block(sql_query *query, sql_subtype *restype, list 
*restypelist, dlist *blk, char *opt_name, int is_func);
 
 sql_rel *
@@ -829,7 +795,7 @@ rel_create_func(sql_query *query, dlist 
        if (res && res->token == SQL_TABLE)
                type = F_UNION;
 
-       FUNC_TYPE_STR
+       FUNC_TYPE_STR(type)
 
        is_func = (type != F_PROC && type != F_LOADER);
        assert(lang != FUNC_LANG_INT);
@@ -1065,7 +1031,7 @@ resolve_func( mvc *sql, sql_schema *s, c
        list *list_func = NULL, *type_list = NULL;
        char is_func = (type != F_PROC && type != F_LOADER), *F = NULL, *fn = 
NULL;
 
-       FUNC_TYPE_STR
+       FUNC_TYPE_STR(type)
 
        if (typelist) {
                sql_subfunc *sub_func;
@@ -1146,7 +1112,7 @@ rel_drop_func(mvc *sql, dlist *qname, dl
        sql_func *func = NULL;
        char *F = NULL, *fn = NULL;
 
-       FUNC_TYPE_STR
+       FUNC_TYPE_STR(type)
        (void) fn;
 
        if (sname && !(s = mvc_bind_schema(sql, sname)))
@@ -1173,7 +1139,7 @@ rel_drop_all_func(mvc *sql, dlist *qname
        list * list_func = NULL;
        char *F = NULL, *fn = NULL;
 
-       FUNC_TYPE_STR
+       FUNC_TYPE_STR(type)
 
        if (sname && !(s = mvc_bind_schema(sql, sname)))
                return sql_error(sql, 02, SQLSTATE(3F000) "DROP %s: no such 
schema '%s'", F, sname);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to