diff options
author | Horst Hunger <horst@mysql.com> | 2008-12-19 16:03:32 +0100 |
---|---|---|
committer | Horst Hunger <horst@mysql.com> | 2008-12-19 16:03:32 +0100 |
commit | 357b5009409ed6666bf1df48a80d76cd42a482c8 (patch) | |
tree | 7a2fa9b404ffb20d1572c51a0bca7ecc64992310 /mysql-test/suite/sys_vars/t/foreign_key_checks_func.test | |
parent | ba816c14a9bc8012759da9d58f858f1e73bec708 (diff) | |
download | mariadb-git-357b5009409ed6666bf1df48a80d76cd42a482c8.tar.gz |
WL#4681: Took the system variable tests out of the main test suite, put them into "sys_vars", updated some reult files and tests.
Diffstat (limited to 'mysql-test/suite/sys_vars/t/foreign_key_checks_func.test')
-rw-r--r-- | mysql-test/suite/sys_vars/t/foreign_key_checks_func.test | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test b/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test new file mode 100644 index 00000000000..4d2c63bbce6 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/foreign_key_checks_func.test @@ -0,0 +1,139 @@ +############## mysql-test\t\foreign_key_checks_func.test ##################### +# # +# Variable Name: foreign_key_checks # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable foreign_key_checks # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--source include/have_innodb.inc + +--echo '#--------------------FN_DYNVARS_032_01-------------------------#' +#################################################################### +# Check if setting foreign_key_checks is changed in new connection # +#################################################################### + +SET @@session.foreign_key_checks = 0; +# con1 will be default connection from now on +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@session.foreign_key_checks; +SET @@session.foreign_key_checks = 1; +--echo 'connect (con2,localhost,root,,,,)' +connect (con2,localhost,root,,,,); +--echo 'connection con2' +connection con2; +SELECT @@session.foreign_key_checks; +disconnect con2; + +--echo '#--------------------FN_DYNVARS_032_02-------------------------#' +################################################################# +# Begin the functionality Testing of foreign_key_checks # +################################################################# + +--echo 'connection con1' +connection con1; + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + +CREATE TABLE t1(a INT PRIMARY KEY)ENGINE = INNODB; +CREATE TABLE t2(a INT PRIMARY KEY,b INT)ENGINE = INNODB; + +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +#=========================================================== +--echo '---Check when foreign_key_checks is enabled---' +#=========================================================== + + +SET @@session.foreign_key_checks = 1; + +INSERT INTO t1 values (1),(2),(3); + +INSERT INTO t2 values (10,1); +--Error ER_NO_REFERENCED_ROW_2 +INSERT INTO t2 values (20,22); + +#=========================================================== +--echo '---Check when foreign_key_checks is disabled---' +#=========================================================== + +--Error ER_ROW_IS_REFERENCED_2 +TRUNCATE t1; + +SET @@session.foreign_key_checks = 0; + +TRUNCATE t1; +TRUNCATE t2; + +INSERT INTO t1 values (1),(2),(3); + +INSERT INTO t2 values (10,1); +INSERT INTO t2 values (20,4); + +--echo 'try enabling foreign_key_checks again'; +SET @@session.foreign_key_checks = 1; + +UPDATE t2 SET b=4 where a=20; +--echo 'Bug#35358: Updating an incorrect foreign key(inserted by disabling ' +--echo 'foreign_key_checks)to the same value does not raise error after ' +--echo 'enabling foreign_key_checks' + +#============================================================================== +--echo 'Check when foreign_key_checks is enabled and FK constraint is re-created' +#============================================================================== + +SET @@session.foreign_key_checks = 0; +TRUNCATE t2; +TRUNCATE t1; + +INSERT INTO t1 values (1),(2),(3); +INSERT INTO t2 values (10,1),(20,4); + +ALTER TABLE t2 DROP FOREIGN KEY fk; + +SET @@session.foreign_key_checks = 1; + +# Test disabled as error description is different. The resulting description has +# difference in code #sql-xxx_2 where xxx is different for each run. +#--Error ER_NO_REFERENCED_ROW_2 +#ALTER TABLE t2 +#ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +# delete all rows with incorrect reference +DELETE FROM t2 WHERE b not in (SELECT a from t1); + +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +INSERT INTO t2 values (20,2); + +SELECT * from t2; + +--disable_warnings +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t1; +--enable_warnings + +########################################################## +# End of functionality Testing for foreign_key_checks # +########################################################## + |