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