Changeset: 00c95853afcd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=00c95853afcd
Modified Files:
        sql/server/rel_schema.c
        sql/test/Tests/create_in_schema.stable.err
        sql/test/Tests/create_in_schema.stable.out
Branch: Jun2020
Log Message:

disallow persistent table creation in the 'tmp' schema


diffs (98 lines):

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
@@ -1051,6 +1051,8 @@ rel_create_table(sql_query *query, sql_s
                return sql_error(sql, 02, SQLSTATE(42S01) "%s TABLE: name '%s' 
already in use", cd, name);
        } else if (temp != SQL_DECLARED_TABLE && (!mvc_schema_privs(sql, s) && 
!(isTempSchema(s) && temp == SQL_LOCAL_TEMP))){
                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);
+       } else if (temp == SQL_PERSIST && isTempSchema(s)){
+               return sql_error(sql, 02, SQLSTATE(42000) "CREATE TABLE: cannot 
create persistent table '%s' in the schema '%s'", name, s->base.name);
        } else if (table_elements_or_subquery->token == SQL_CREATE_TABLE) {
                /* table element list */
                dnode *n;
diff --git a/sql/test/Tests/create_in_schema.stable.err 
b/sql/test/Tests/create_in_schema.stable.err
--- a/sql/test/Tests/create_in_schema.stable.err
+++ b/sql/test/Tests/create_in_schema.stable.err
@@ -14,7 +14,27 @@ MAPI  = (monetdb) /var/tmp/mtest-27483/.
 QUERY = select * from bla3;    -- should fail
 ERROR = !SELECT: no such table 'bla3'
 CODE  = 42S02
-MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = create table tmp.bla5(id int);
+ERROR = !CREATE TABLE: cannot create persistent table 'bla5' in the schema 
'tmp'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = select * from bla5;    -- works, because tmp is in search path
+ERROR = !SELECT: no such table 'bla5'
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = create view tmp.v_bla5 as select * from bla5;
+ERROR = !SELECT: no such table 'bla5'
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = select * from v_bla5;
+ERROR = !SELECT: no such table 'v_bla5'
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = drop view v_bla5;      -- should fail
+ERROR = !DROP VIEW: unknown view 'v_bla5'
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
 QUERY = drop view tmp.v_bla5;
 ERROR = !DROP VIEW: unknown view 'v_bla5'
 CODE  = 42S02
@@ -22,7 +42,11 @@ MAPI  = (monetdb) /var/tmp/mtest-30274/.
 QUERY = drop view v_bla4;      -- should fail
 ERROR = !DROP VIEW: unknown view 'v_bla4'
 CODE  = 42S02
-MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
+QUERY = drop table bla5;
+ERROR = !DROP TABLE: no such table 'bla5'
+CODE  = 42S02
+MAPI  = (monetdb) /var/tmp/mtest-1368052/.s.monetdb.31813
 QUERY = drop table sys.bla4;   -- should fail
 ERROR = !DROP TABLE: no such table 'bla4'
 CODE  = 42S02
diff --git a/sql/test/Tests/create_in_schema.stable.out 
b/sql/test/Tests/create_in_schema.stable.out
--- a/sql/test/Tests/create_in_schema.stable.out
+++ b/sql/test/Tests/create_in_schema.stable.out
@@ -60,10 +60,6 @@ stdout of test 'create_in_schema` in dir
 % id # name
 % int # type
 % 1 # length
-% tmp.bla5 # table_name
-% id # name
-% int # type
-% 1 # length
 #create view v_bla1 as select * from bla1;
 #select * from v_bla1;
 % sys.v_bla1 # table_name
@@ -88,14 +84,17 @@ stdout of test 'create_in_schema` in dir
 % id # name
 % int # type
 % 1 # length
-#create view tmp.v_bla5 as select * from bla5;
-#select * from v_bla5;
-% tmp.v_bla5 # table_name
-% id # name
-% int # type
-% 1 # length
+#drop view bla.v_bla4;
+#drop view v_bla3;
+#drop view v_bla2;
+#drop view v_bla1;
+#drop table bla4;
+#drop table bla.bla3;
+#drop table bla1;
+#drop table bla2;
+#drop schema "bla";
 
-# 11:50:10 >  
-# 11:50:10 >  Done.
-# 11:50:10 >  
+# 12:56:13 >  
+# 12:56:13 >  "Done."
+# 12:56:13 >  
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to