Changeset: d00e2d0a2c99 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d00e2d0a2c99
Modified Files:
        sql/server/rel_psm.c
        sql/server/rel_schema.c
Branch: trails
Log Message:

Disallow user-defined tables and views on 'cquery' schema


diffs (53 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
@@ -1601,12 +1601,14 @@ create_table_from_loader(sql_query *quer
 
        if (sname && !(s = mvc_bind_schema(sql, sname)))
                return sql_error(sql, 02, SQLSTATE(3F000) "CREATE TABLE: no 
such schema '%s'", sname);
-
-       if (mvc_bind_table(sql, s, tname)) {
+       if (s == NULL)
+               s = cur_schema(sql);
+       if (!mvc_schema_privs(sql, s))
+               return sql_error(sql, 02, SQLSTATE(42000) "CREATE TABLE: 
insufficient privileges for user '%s' in schema '%s'", stack_get_string(sql, 
"current_user"), s->base.name);
+       if (mvc_bind_table(sql, s, tname))
                return sql_error(sql, 02, SQLSTATE(42S01) "CREATE TABLE: name 
'%s' already in use", tname);
-       } else if (!mvc_schema_privs(sql, s)){
-               return sql_error(sql, 02, SQLSTATE(42000) "CREATE TABLE: 
insufficient privileges for user '%s' in schema '%s'", stack_get_string(sql, 
"current_user"), s->base.name);
-       }
+       if (!strcmp(s->base.name, "cquery"))
+               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: tables 
not allowed in cquery schema");
 
        rel = rel_loader_function(query, fcall, new_exp_list(sql->sa), &loader);
        if (!rel || !loader) {
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1069,6 +1069,8 @@ rel_create_table(sql_query *query, sql_s
                }
        }
 
+       if (!strcmp(s->base.name, "cquery"))
+               return sql_error(sql, 02, SQLSTATE(42000) "CREATE VIEW: views 
not allowed in cquery schema");
        if(tt == tt_stream_per || tt == tt_stream_temp) {
                window_size = stream_details->h->data.i_val;
                stride = stream_details->h->next->data.i_val;
@@ -1193,6 +1195,8 @@ rel_create_view(sql_query *query, sql_sc
                return sql_error(sql, 02, SQLSTATE(3F000) "CREATE VIEW: no such 
schema '%s'", sname);
        if (s == NULL)
                s = cur_schema(sql);
+       if (!strcmp(s->base.name, "cquery"))
+               return sql_error(sql, 02, SQLSTATE(42000) "CREATE VIEW: views 
not allowed in cquery schema");
 
        if (create && (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && 
persistent == SQL_LOCAL_TEMP))) {
                return sql_error(sql, 02, SQLSTATE(42000) "%s VIEW: access 
denied for %s to schema '%s'", base, stack_get_string(sql, "current_user"), 
s->base.name);
@@ -2722,6 +2726,8 @@ rel_set_table_schema(sql_query *query, c
                return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for '%s' to schema '%s'", stack_get_string(sql, "current_user"), 
new_schema);
        if (isTempSchema(ns))
                return sql_error(sql, 02, SQLSTATE(3F000) "ALTER TABLE: not 
possible to change table's schema to temporary");
+       if (!strcmp(ns->base.name, "cquery"))
+               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: tables 
not allowed in cquery schema");
        if (mvc_bind_table(sql, ns, tname))
                return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: table 
'%s' on schema '%s' already exists", tname, new_schema);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to