Changeset: 7d767181bdc6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d767181bdc6 Modified Files: sql/server/rel_schema.c sql/server/sql_privileges.c Branch: nospare Log Message:
merged with default diffs (72 lines): diff --git a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows --- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows +++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows @@ -117,7 +117,7 @@ end user.main; % clob # type % 235 # length function user.main():void; - X_1:void := querylog.define("explain copy into ttt from E\\'\\\\\\\\tmp/xyz\\';":str, "user_0":str, 22:int); + querylog.define("explain copy into ttt from E\\'\\\\\\\\tmp/xyz\\';":str, "user_0":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x00000049B72361C0:ptr, "|":str, "\n":str, nil:str, "null":str, "\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, X_28:bat[:int]); @@ -159,7 +159,7 @@ end user.main; % clob # type % 235 # length function user.main():void; - X_1:void := querylog.define("explain copy into ttt from \\'Z:/tmp/xyz\\';":str, "user_0":str, 22:int); + querylog.define("explain copy into ttt from \\'Z:/tmp/xyz\\';":str, "user_0":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x00000049B72361C0:ptr, "|":str, "\n":str, nil:str, "null":str, "Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, X_28:bat[:int]); 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 @@ -1349,6 +1349,8 @@ sql_drop_table(sql_query *query, dlist * } return NULL; } + if (isDeclaredTable(t)) + return sql_error(sql, 02, SQLSTATE(42000) "DROP TABLE: cannot drop a declared table"); return rel_drop(sql->sa, ddl_drop_table, t->s->base.name, tname, nr, if_exists); } @@ -1680,6 +1682,8 @@ rel_grant_or_revoke_table(mvc *sql, dlis if (!(t = find_table_or_view_on_scope(sql, NULL, sname, tname, err, false))) return NULL; + if (isDeclaredTable(t)) + return sql_error(sql, 02, SQLSTATE(42000) "Cannot %s on a declared table", err); for (dnode *gn = grantees->h; gn; gn = gn->next) { char *grantee = gn->data.sval; @@ -1815,6 +1819,8 @@ rel_create_index(mvc *sql, char *iname, if (!(t = find_table_or_view_on_scope(sql, NULL, sname, tname, "CREATE INDEX", false))) return NULL; + if (isDeclaredTable(t)) + return sql_error(sql, 02, SQLSTATE(42000) "CREATE INDEX: cannot create index on a declared table"); if (!mvc_schema_privs(sql, t->s)) return sql_error(sql, 02, SQLSTATE(42000) "CREATE INDEX: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), t->s->base.name); if ((i = mvc_bind_idx(sql, t->s, iname))) diff --git a/sql/server/sql_privileges.c b/sql/server/sql_privileges.c --- a/sql/server/sql_privileges.c +++ b/sql/server/sql_privileges.c @@ -136,6 +136,8 @@ sql_grant_table_privs( mvc *sql, char *g if (!(t = find_table_or_view_on_scope(sql, NULL, sname, tname, "GRANT", false))) throw(SQL,"sql.grant_table", "%s", sql->errstr); + if (isDeclaredTable(t)) + throw(SQL,"sql.grant_table", SQLSTATE(42000) "GRANT: cannot grant on a declared table"); allowed = schema_privs(grantor, t->s); @@ -272,6 +274,8 @@ sql_revoke_table_privs( mvc *sql, char * if (!(t = find_table_or_view_on_scope(sql, NULL, sname, tname, "REVOKE", false))) throw(SQL,"sql.revoke_table","%s", sql->errstr); + if (isDeclaredTable(t)) + throw(SQL,"sql.revoke_table", SQLSTATE(42000) "REVOKE: cannot revoke on a declared table"); allowed = schema_privs(grantor, t->s); if (!allowed) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list