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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list