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

Reply via email to