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