Changeset: 901a54cbadd9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=901a54cbadd9
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out
        sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
        sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
        sql/server/rel_select.c
        sql/server/sql_parser.y
        sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.sql
        
sql/test/BugTracker-2012/Tests/insert_serial_with_unique_key.Bug-3091.sql
        sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.sql
        sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql
        sql/test/Dependencies/Tests/Dependencies.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out.int128
        sql/test/Skyserver/drop_user.sql
        sql/test/leaks/Tests/check1.stable.out.int128
Branch: Jul2017
Log Message:

Fixes for bug 6440 (ie properly use semi/anti join for in)

Implement drop schema schema_name restrict (see bug 6438)
We keep the current default (cascade) in the release branch and switch
to the SQL correct default in the default branch.


diffs (269 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -875,6 +875,10 @@ SQLdrop_schema(Client cntxt, MalBlkPtr m
                msg = sql_message("42000!DROP SCHEMA: access denied for '%s'", 
sname);
        } else if (sql_schema_has_user(sql, s)) {
                msg = sql_message("2BM37!DROP SCHEMA: unable to drop schema 
'%s' (there are database objects which depend on it", sname);
+       } else if (!action /* RESTRICT */ && (
+               !list_empty(s->tables.set) || !list_empty(s->types.set) ||
+               !list_empty(s->funcs.set) || !list_empty(s->seqs.set))) {
+               msg = sql_message("2BM37!DROP SCHEMA: unable to drop schema 
'%s' (there are database objects which depend on it", sname);
        } else {
                mvc_drop_schema(sql, s, action);
        }
diff --git a/sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out 
b/sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out
--- a/sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out
+++ b/sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out
@@ -42,22 +42,22 @@ Ready.
 (u'l_suppkey', 262144, 60175)
 (u'l_tax', 524288, 60175)
 [(u'l_comment', 0), (u'l_commitdate', 0), (u'l_discount', 0), 
(u'l_extendedprice', 0), (u'l_linenumber', 0), (u'l_linestatus', 0), 
(u'l_orderkey', 0), (u'l_partkey', 0), (u'l_quantity', 0), (u'l_receiptdate', 
0), (u'l_returnflag', 0), (u'l_shipdate', 0), (u'l_shipinstruct', 0), 
(u'l_shipmode', 0), (u'l_suppkey', 0), (u'l_tax', 0)]
-(u'l_comment', 65536, 0)
-(u'l_commitdate', 65536, 0)
-(u'l_discount', 65536, 0)
-(u'l_extendedprice', 65536, 0)
-(u'l_linenumber', 65536, 0)
-(u'l_linestatus', 0, 0)
-(u'l_orderkey', 65536, 0)
-(u'l_partkey', 65536, 0)
-(u'l_quantity', 65536, 0)
-(u'l_receiptdate', 65536, 0)
-(u'l_returnflag', 0, 0)
-(u'l_shipdate', 65536, 0)
-(u'l_shipinstruct', 0, 0)
-(u'l_shipmode', 0, 0)
-(u'l_suppkey', 65536, 0)
-(u'l_tax', 65536, 0)
+(u'l_comment', 262144, 0)
+(u'l_commitdate', 262144, 0)
+(u'l_discount', 524288, 0)
+(u'l_extendedprice', 524288, 0)
+(u'l_linenumber', 262144, 0)
+(u'l_linestatus', 65536, 0)
+(u'l_orderkey', 262144, 0)
+(u'l_partkey', 262144, 0)
+(u'l_quantity', 524288, 0)
+(u'l_receiptdate', 262144, 0)
+(u'l_returnflag', 65536, 0)
+(u'l_shipdate', 262144, 0)
+(u'l_shipinstruct', 65536, 0)
+(u'l_shipmode', 65536, 0)
+(u'l_suppkey', 262144, 0)
+(u'l_tax', 524288, 0)
 
 # 13:16:20 >  
 # 13:16:20 >  "Done."
diff --git a/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out 
b/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
--- a/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
+++ b/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
@@ -25,22 +25,22 @@ Ready.
 # 16:01:26 >  "/usr/bin/python2" "leaks.SQL.py" "leaks"
 # 16:01:26 >  
 
-(u'l_comment', 65536, 0)
-(u'l_commitdate', 65536, 0)
-(u'l_discount', 65536, 0)
-(u'l_extendedprice', 65536, 0)
-(u'l_linenumber', 65536, 0)
+(u'l_comment', 262144, 0)
+(u'l_commitdate', 262144, 0)
+(u'l_discount', 524288, 0)
+(u'l_extendedprice', 524288, 0)
+(u'l_linenumber', 262144, 0)
 (u'l_linestatus', 0, 0)
-(u'l_orderkey', 65536, 0)
-(u'l_partkey', 65536, 0)
-(u'l_quantity', 65536, 0)
-(u'l_receiptdate', 65536, 0)
+(u'l_orderkey', 262144, 0)
+(u'l_partkey', 262144, 0)
+(u'l_quantity', 524288, 0)
+(u'l_receiptdate', 262144, 0)
 (u'l_returnflag', 0, 0)
-(u'l_shipdate', 65536, 0)
+(u'l_shipdate', 262144, 0)
 (u'l_shipinstruct', 0, 0)
 (u'l_shipmode', 0, 0)
-(u'l_suppkey', 65536, 0)
-(u'l_tax', 65536, 0)
+(u'l_suppkey', 262144, 0)
+(u'l_tax', 524288, 0)
 
 # 16:01:26 >  
 # 16:01:26 >  "Done."
diff --git a/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows 
b/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
--- a/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
+++ b/sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
@@ -25,22 +25,22 @@ Ready.
 # 16:01:26 >  "/usr/bin/python2" "leaks.SQL.py" "leaks"
 # 16:01:26 >  
 
-(u'l_comment', 65536, 0)
-(u'l_commitdate', 65536, 0)
-(u'l_discount', 65536, 0)
-(u'l_extendedprice', 65536, 0)
-(u'l_linenumber', 65536, 0)
+(u'l_comment', 262144, 0)
+(u'l_commitdate', 262144, 0)
+(u'l_discount', 524288, 0)
+(u'l_extendedprice', 524288, 0)
+(u'l_linenumber', 262144, 0)
 (u'l_linestatus', 0, 0)
-(u'l_orderkey', 65536, 0)
-(u'l_partkey', 65536, 0)
-(u'l_quantity', 65536, 0)
-(u'l_receiptdate', 65536, 0)
+(u'l_orderkey', 262144, 0)
+(u'l_partkey', 262144, 0)
+(u'l_quantity', 524288, 0)
+(u'l_receiptdate', 262144, 0)
 (u'l_returnflag', 0, 0)
-(u'l_shipdate', 65536, 0)
+(u'l_shipdate', 262144, 0)
 (u'l_shipinstruct', 0, 0)
 (u'l_shipmode', 0, 0)
-(u'l_suppkey', 65536, 0)
-(u'l_tax', 65536, 0)
+(u'l_suppkey', 262144, 0)
+(u'l_tax', 524288, 0)
 
 # 16:01:26 >  
 # 16:01:26 >  "Done."
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2670,7 +2670,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
                                rel = rel_crossproduct(sql->sa, left, right, 
op_join);
                                rel->exps = jexps;
                        }
-                       if (correlated || l_is_value) {
+                       if (sc->token == SQL_IN || correlated || l_is_value) {
                                rel->op = (sc->token == SQL_IN)?op_semi:op_anti;
                        } else if (sc->token == SQL_NOT_IN) {
                                rel->op = op_anti;
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -835,7 +835,7 @@ schema:
   |    drop SCHEMA if_exists qname drop_action
                { dlist *l = L();
                append_list(l, $4);
-               append_int(l, $5);
+               append_int(l, 1 /*$5 use CASCADE in the release */);
                append_int(l, $3);
                $$ = _symbol_create_list( SQL_DROP_SCHEMA, l); }
  ;
diff --git a/sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.sql 
b/sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.sql
--- a/sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.sql
+++ b/sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.sql
@@ -13,7 +13,7 @@ select * from datacell.basket_X;
 select * from datacell.basket_X();
 drop function datacell.basket_X;
 drop table datacell.basket_X;
-drop schema datacell;
+drop schema datacell cascade;
 
 create schema schema_2817;
 create table schema_2817.table_2817(
@@ -30,4 +30,4 @@ select * from schema_2817.table_2817;
 select * from schema_2817.function_2817();
 drop function schema_2817.function_2817;
 drop table schema_2817.table_2817;
-drop schema schema_2817;
+drop schema schema_2817 cascade;
diff --git 
a/sql/test/BugTracker-2012/Tests/insert_serial_with_unique_key.Bug-3091.sql 
b/sql/test/BugTracker-2012/Tests/insert_serial_with_unique_key.Bug-3091.sql
--- a/sql/test/BugTracker-2012/Tests/insert_serial_with_unique_key.Bug-3091.sql
+++ b/sql/test/BugTracker-2012/Tests/insert_serial_with_unique_key.Bug-3091.sql
@@ -17,7 +17,7 @@ VALUES
 ;
 
 DROP TABLE "meta"."program_specs";
-DROP SCHEMA "meta";
+DROP SCHEMA "meta" CASCADE;
 
 create table t30(
   a varchar(100),
diff --git a/sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.sql 
b/sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.sql
--- a/sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.sql
+++ b/sql/test/BugTracker-2015/Tests/schema_view.Bug-3708.sql
@@ -8,8 +8,8 @@ set schema s2;
 select * from s1.s4;
 
 set schema sys;
-drop schema s1;
-drop schema s2;
+drop schema s1 cascade;
+drop schema s2 cascade;
 
 create schema s1;
 create schema s2;
@@ -22,5 +22,5 @@ set schema s2;
 plan select * from s1.s4;
 
 set schema sys;
-drop schema s1;
-drop schema s2;
+drop schema s1 cascade;
+drop schema s2 cascade;
diff --git 
a/sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql 
b/sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql
--- a/sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql
+++ b/sql/test/BugTracker-2017/Tests/function_and_mergetable.Bug-6288.sql
@@ -17,4 +17,4 @@ END;
 SELECT * FROM foo();
 
 SET SCHEMA sys;
-DROP SCHEMA banana;
+DROP SCHEMA banana CASCADE;
diff --git a/sql/test/Dependencies/Tests/Dependencies.stable.out 
b/sql/test/Dependencies/Tests/Dependencies.stable.out
--- a/sql/test/Dependencies/Tests/Dependencies.stable.out
+++ b/sql/test/Dependencies/Tests/Dependencies.stable.out
@@ -592,9 +592,9 @@ Cleanup
 % name,        name,   L103 # name
 % varchar,     varchar,        char # type
 % 11,  16,     8 # length
+[ "tables",    "geometry_columns",     "DEP_VIEW"      ]
 [ "columns",   "geometry_columns",     "DEP_VIEW"      ]
 [ "types",     "geometry_columns",     "DEP_VIEW"      ]
-[ "tables",    "geometry_columns",     "DEP_VIEW"      ]
 [ "schemas",   "geometry_columns",     "DEP_VIEW"      ]
 [ "environment",       "geometry_columns",     "DEP_VIEW"      ]
 #SELECT t.name, i.name, 'DEP_INDEX' from tables as t, idxs as i where 
i.table_id = t.id and i.name not in (select name from keys) and t.type in (0, 
10, 20, 30);
diff --git a/sql/test/Dependencies/Tests/Dependencies.stable.out.int128 
b/sql/test/Dependencies/Tests/Dependencies.stable.out.int128
--- a/sql/test/Dependencies/Tests/Dependencies.stable.out.int128
+++ b/sql/test/Dependencies/Tests/Dependencies.stable.out.int128
@@ -592,9 +592,9 @@ Cleanup
 % name,        name,   L103 # name
 % varchar,     varchar,        char # type
 % 11,  16,     8 # length
+[ "tables",    "geometry_columns",     "DEP_VIEW"      ]
 [ "columns",   "geometry_columns",     "DEP_VIEW"      ]
 [ "types",     "geometry_columns",     "DEP_VIEW"      ]
-[ "tables",    "geometry_columns",     "DEP_VIEW"      ]
 [ "schemas",   "geometry_columns",     "DEP_VIEW"      ]
 [ "environment",       "geometry_columns",     "DEP_VIEW"      ]
 #SELECT t.name, i.name, 'DEP_INDEX' from tables as t, idxs as i where 
i.table_id = t.id and i.name not in (select name from keys) and t.type in (0, 
10, 20, 30);
diff --git a/sql/test/Skyserver/drop_user.sql b/sql/test/Skyserver/drop_user.sql
--- a/sql/test/Skyserver/drop_user.sql
+++ b/sql/test/Skyserver/drop_user.sql
@@ -1,7 +1,7 @@
 START TRANSACTION;
 
 ALTER USER "skyserver" SET SCHEMA "sys";
-DROP SCHEMA skyserver;
+DROP SCHEMA skyserver CASCADE;
 DROP USER skyserver;
 
 COMMIT;
diff --git a/sql/test/leaks/Tests/check1.stable.out.int128 
b/sql/test/leaks/Tests/check1.stable.out.int128
--- a/sql/test/leaks/Tests/check1.stable.out.int128
+++ b/sql/test/leaks/Tests/check1.stable.out.int128
@@ -316,7 +316,7 @@ Ready.
 % L2,  L5 # name
 % char,        bigint # type
 % 9,   3 # length
-[ "transient", 161     ]
+[ "transient", 167     ]
 #select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
 % .L2, .L6 # table_name
 % L2,  L5 # name
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to