Changeset: c7df00a8fcf9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c7df00a8fcf9
Modified Files:
        sql/server/rel_psm.c
Branch: Dec2025
Log Message:

Only the admin user can create functions implemented in MAL.


diffs (20 lines):

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
@@ -880,6 +880,7 @@ has_generic_decimal_result(list *types)
        return false;
 }
 
+#define admin_privs(g) ((g) == USER_MONETDB || (g) == ROLE_SYSADMIN)
 
 static sql_rel *
 rel_create_func(sql_query *query, dlist *qname, dlist *params, symbol *res, 
dlist *ext_name, dlist *body, sql_ftype type, sql_flang lang, int replace, int 
order_spec)
@@ -929,6 +930,8 @@ rel_create_func(sql_query *query, dlist 
                return sql_error(sql, 02, SQLSTATE(42000) "CREATE %s: %s 
functions creation via SQL not supported", F, fn);
        else if (LANG_EXT(lang) && !(type == F_FUNC || type == F_AGGR || type 
== F_UNION || type == F_LOADER))
                return sql_error(sql, 02, SQLSTATE(42000) "CREATE %s: %ss 
creation via external programming languages not supported", F, fn);
+       else if (lang == FUNC_LANG_MAL && !admin_privs(sql->user_id) && 
!admin_privs(sql->role_id))
+               return sql_error(sql, 02, SQLSTATE(42000) "CREATE %s: 
insufficient privileges for user '%s'", F, get_string_global_var(sql, 
"current_user"));
 
        if (sname && !(s = mvc_bind_schema(sql, sname)))
                return sql_error(sql, ERR_NOTFOUND, SQLSTATE(3F000) "CREATE %s: 
no such schema '%s'", F, sname);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to