mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
004123892d
Bug#35335 funcs_1: Some tests fail within load_file during pushbuild runs Solution: 1. Move files with input data used in load_file, load data etc. from suite/funcs_1/<whatever> to std_data 2. Use for testsuite funcs_1 the server option --secure-file-priv=<MYSQLTEST_VARDIR> 3. Outfiles have to be stored under MYSQLTEST_VARDIR + changes according to WL#4304 Cleanup in funcs_1 tests - backport of fixes/improvements made in 5.1 to 5.0 The differences between scripts in 5.0 and 5.1 cause much additional and annoying work during any upmerge. - replace error numbers with names - improved comments - improved formatting - Unify storage engine names so that result files for storage engine variants do not differ (some tests) - remove a script no more used (tests are done in other scripts) BitKeeper/deleted/.del-triggers_master.test: Delete: mysql-test/suite/funcs_1/triggers/triggers_master.test mysql-test/std_data/funcs_1/innodb_tb1.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb1.txt -> mysql-test/std_data/funcs_1/innodb_tb1.txt mysql-test/std_data/funcs_1/innodb_tb2.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb2.txt -> mysql-test/std_data/funcs_1/innodb_tb2.txt mysql-test/std_data/funcs_1/innodb_tb3.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb3.txt -> mysql-test/std_data/funcs_1/innodb_tb3.txt mysql-test/std_data/funcs_1/innodb_tb4.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb4.txt -> mysql-test/std_data/funcs_1/innodb_tb4.txt mysql-test/std_data/funcs_1/memory_tb1.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb1.txt -> mysql-test/std_data/funcs_1/memory_tb1.txt mysql-test/std_data/funcs_1/memory_tb2.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb2.txt -> mysql-test/std_data/funcs_1/memory_tb2.txt mysql-test/std_data/funcs_1/memory_tb3.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb3.txt -> mysql-test/std_data/funcs_1/memory_tb3.txt mysql-test/std_data/funcs_1/memory_tb4.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb4.txt -> mysql-test/std_data/funcs_1/memory_tb4.txt mysql-test/std_data/funcs_1/myisam_tb1.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb1.txt -> mysql-test/std_data/funcs_1/myisam_tb1.txt mysql-test/std_data/funcs_1/myisam_tb2.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb2.txt -> mysql-test/std_data/funcs_1/myisam_tb2.txt mysql-test/std_data/funcs_1/myisam_tb3.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb3.txt -> mysql-test/std_data/funcs_1/myisam_tb3.txt mysql-test/std_data/funcs_1/myisam_tb4.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb4.txt -> mysql-test/std_data/funcs_1/myisam_tb4.txt mysql-test/std_data/funcs_1/t3.txt: Rename: mysql-test/suite/funcs_1/data/t3.txt -> mysql-test/std_data/funcs_1/t3.txt mysql-test/std_data/funcs_1/t4.txt: Rename: mysql-test/suite/funcs_1/data/t4.txt -> mysql-test/std_data/funcs_1/t4.txt mysql-test/std_data/funcs_1/t7.txt: Rename: mysql-test/suite/funcs_1/data/t7.txt -> mysql-test/std_data/funcs_1/t7.txt mysql-test/std_data/funcs_1/t9.txt: Rename: mysql-test/suite/funcs_1/data/t9.txt -> mysql-test/std_data/funcs_1/t9.txt mysql-test/Makefile.am: Introduce installation of funcs_1 files in std_data. mysql-test/mysql-test-run.pl: The tests within funcs_1 need a server started with --secure-file-priv=<MYSQLTEST_VARDIR> like the main regression tests. mysql-test/suite/funcs_1/README.txt: Extended description mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc: Cleanup mysql-test/suite/funcs_1/datadict/datadict_load.inc: Cleanup mysql-test/suite/funcs_1/include/innodb_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/sp_tb.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/r/innodb_func_view.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_03.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_08.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_09.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_frkey.result: Updated results mysql-test/suite/funcs_1/r/innodb_views.result: Updated results mysql-test/suite/funcs_1/r/is_columns_innodb.result: Updated results mysql-test/suite/funcs_1/r/is_columns_memory.result: Updated results mysql-test/suite/funcs_1/r/is_columns_myisam.result: Updated results mysql-test/suite/funcs_1/r/is_columns_ndb.result: Updated results mysql-test/suite/funcs_1/r/is_tables_innodb.result: Updated results mysql-test/suite/funcs_1/r/is_tables_memory.result: Updated results mysql-test/suite/funcs_1/r/is_tables_myisam.result: Updated results mysql-test/suite/funcs_1/r/is_tables_ndb.result: Updated results mysql-test/suite/funcs_1/r/memory_func_view.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_03.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_08.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_09.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/memory_views.result: Updated results mysql-test/suite/funcs_1/r/myisam_func_view.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_03.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_08.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_09.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/myisam_views.result: Updated results mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc: "--echo" instead of SQL command. mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc: Adjustment to new storage place of infile + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_02.inc: Backport from 5.1 + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_03.inc: Minor improvements + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_06.inc: Backport from 5.1 + correct formatting mysql-test/suite/funcs_1/storedproc/storedproc_10.inc: Backport from 5.1. + correct formatting mysql-test/suite/funcs_1/t/innodb_trig_0407.test: Cleanup mysql-test/suite/funcs_1/t/is_basics_mixed.test: Adjustment to new storage place of outfile. mysql-test/suite/funcs_1/t/memory_storedproc_02.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_03.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_06.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_07.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_08.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_10.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_02.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_03.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_06.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_07.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_08.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_10.test: Cleanup mysql-test/suite/funcs_1/triggers/trig_frkey2.inc: Cleanup mysql-test/suite/funcs_1/triggers/triggers_0102.inc: Cleanup mysql-test/suite/funcs_1/triggers/triggers_03.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_0407.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_08.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_09.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc: Backport from 5.1 mysql-test/suite/funcs_1/views/func_view.inc: Backport from 5.1 mysql-test/suite/funcs_1/views/views_master.inc: Cleanup mysql-test/std_data/funcs_1/load_file.txt: New BitKeeper file ``mysql-test/std_data/funcs_1/load_file.txt''
244 lines
8 KiB
SQL
244 lines
8 KiB
SQL
#################################################################
|
|
# This file inclde tests that address the foreign key cases of
|
|
# the following requirements since they are specific to innodb.
|
|
# Other test cases for these requirements are included in the
|
|
# triggers_master.test file.
|
|
#################################################################
|
|
|
|
--disable_abort_on_error
|
|
|
|
# OBN - The following tests are disabled until triggers are supported with forign
|
|
# keys in innodb (foreign keys tests dispabled - bug 11472)
|
|
#################################################################################
|
|
#Section x.x.x.3
|
|
# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers
|
|
# can be executed at once
|
|
let $message= Testcase x.x.x.3:;
|
|
--source include/show_msg.inc
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1, t2;
|
|
--enable_warnings
|
|
|
|
eval CREATE TABLE t0 (col1 char(50)) ENGINE=$engine_type;
|
|
eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
|
|
PRIMARY KEY (id)) ENGINE=$engine_type;
|
|
eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL) ENGINE=$engine_type;
|
|
eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind
|
|
(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
|
|
create trigger tr1 after update on t2 for each row
|
|
insert into t0 values ('tr_t2');
|
|
create trigger tr2 after update on t3 for each row
|
|
insert into t0 values ('tr_t3');
|
|
create trigger tr3 after update on t4 for each row
|
|
insert into t0 values ('tr_t4');
|
|
create trigger tr3 after update on t5 for each row
|
|
insert into t0 values ('tr_t5');
|
|
create trigger tr4 after update on t6 for each row
|
|
insert into t0 values ('tr_t6');
|
|
create trigger tr5 after update on t7 for each row
|
|
insert into t0 values ('tr_t7');
|
|
create trigger tr5 after update on t8 for each row
|
|
insert into t0 values ('tr_t8');
|
|
create trigger tr6 after update on t9 for each row
|
|
insert into t0 values ('tr_t9');
|
|
create trigger tr7 after update on t10 for each row
|
|
insert into t0 values ('tr_t10');
|
|
create trigger tr8 after update on t11 for each row
|
|
insert into t0 values ('tr_t11');
|
|
|
|
insert into t1 values (1,'Department A');
|
|
insert into t1 values (2,'Department B');
|
|
insert into t1 values (3,'Department C');
|
|
|
|
insert into t2 values (1,2,'Employee');
|
|
insert into t3 values (1,2,'Employee');
|
|
insert into t4 values (1,2,'Employee');
|
|
insert into t5 values (1,2,'Employee');
|
|
insert into t6 values (1,2,'Employee');
|
|
insert into t7 values (1,2,'Employee');
|
|
insert into t8 values (1,2,'Employee');
|
|
insert into t9 values (1,2,'Employee');
|
|
insert into t10 values (1,2,'Employee');
|
|
insert into t11 values (1,2,'Employee');
|
|
|
|
select * from t1;
|
|
select * from t2;
|
|
select * from t3;
|
|
select * from t4;
|
|
select * from t5;
|
|
select * from t6;
|
|
select * from t7;
|
|
select * from t8;
|
|
select * from t9;
|
|
select * from t10;
|
|
select * from t11;
|
|
|
|
delete from t1 where id=2;
|
|
select * from t1;
|
|
select * from t2;
|
|
select * from t3;
|
|
select * from t4;
|
|
select * from t5;
|
|
select * from t6;
|
|
select * from t7;
|
|
select * from t8;
|
|
select * from t9;
|
|
select * from t10;
|
|
select * from t11;
|
|
|
|
select * from t0;
|
|
|
|
# Cleanup
|
|
drop trigger tr1;
|
|
drop trigger tr2;
|
|
drop trigger tr3;
|
|
drop trigger tr4;
|
|
drop trigger tr5;
|
|
drop trigger tr6;
|
|
drop trigger tr7;
|
|
drop trigger tr8;
|
|
drop trigger tr9;
|
|
drop trigger tr10;
|
|
drop table t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t1,t0;
|
|
|
|
|
|
|
|
|
|
#Section 3.5.10.5
|
|
# Test case: Ensure that every trigger that should be activated by every possible
|
|
# type of implicit update of its subject table (e.g. a FOREIGN KEY SET
|
|
# DEFAULT action or an UPDATE of a view based on the subject table)
|
|
# is indeed activated correctly.
|
|
let $message= Testcase 3.5.10.5 (foreign keys):;
|
|
--source include/show_msg.inc
|
|
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1, t2;
|
|
--enable_warnings
|
|
|
|
eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
|
|
PRIMARY KEY (id)) ENGINE=$engine_type;
|
|
eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
|
|
INDEX par_ind (f_id), col1 char(50),
|
|
FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;
|
|
create trigger tr_t2 after update on t2
|
|
for each row set @counter=@counter+1;
|
|
|
|
insert into t1 values (1,'Department A');
|
|
insert into t1 values (2,'Department B');
|
|
insert into t1 values (3,'Department C');
|
|
insert into t2 values (1,2,'Emp 1');
|
|
insert into t2 values (2,2,'Emp 2');
|
|
insert into t2 values (3,2,'Emp 3');
|
|
insert into t2 values (4,2,'Emp 4');
|
|
insert into t2 values (5,2,'Emp 5');
|
|
insert into t2 values (6,3,'Emp 6');
|
|
set @counter=0;
|
|
|
|
select * from t1;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
update t1 set id=4 where id=3;
|
|
select * from t1;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
delete from t1 where id=2;
|
|
select * from t1;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
# This is to verify that the trigger works when updated directly
|
|
update t2 set col1='Emp 5a' where id=5;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
# Cleanup
|
|
drop trigger tr_t2;
|
|
drop table t2, t1;
|
|
|
|
|
|
#Section 3.5.10.6
|
|
# Test case: Ensure that every trigger that should be activated by every possible
|
|
# type of implicit deletion from its subject table (e.g. a FOREIGN KEY
|
|
# CASCADE action or a DELETE from a view based on the subject table)
|
|
# is indeed activated correctly.
|
|
let $message= Testcase 3.5.10.6 (foreign keys):;
|
|
--source include/show_msg.inc
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1, t2;
|
|
--enable_warnings
|
|
|
|
eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
|
|
PRIMARY KEY (id)) ENGINE=$engine_type;
|
|
eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
|
|
INDEX par_ind (f_id), col1 char(50),
|
|
FOREIGN KEY (f_id) REFERENCES t1(id)
|
|
ON DELETE CASCADE) ENGINE=$engine_type;
|
|
|
|
create trigger tr_t2 before delete on t2
|
|
for each row set @counter=@counter+1;
|
|
|
|
insert into t1 values (1,'Department A');
|
|
insert into t1 values (2,'Department B');
|
|
insert into t1 values (3,'Department C');
|
|
insert into t2 values (1,2,'Emp 1');
|
|
insert into t2 values (2,2,'Emp 2');
|
|
insert into t2 values (3,2,'Emp 3');
|
|
insert into t2 values (4,2,'Emp 4');
|
|
insert into t2 values (5,2,'Emp 5');
|
|
insert into t2 values (6,3,'Emp 6');
|
|
set @counter=0;
|
|
|
|
select * from t1;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
delete from t1 where id=2;
|
|
|
|
select * from t1;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
# This is to verify that the trigger works when deleted directly
|
|
delete from t2 where id=6;
|
|
select * from t2;
|
|
select @counter;
|
|
|
|
# Cleanup
|
|
drop trigger tr_t2;
|
|
drop table t2, t1;
|
|
|