diff options
author | unknown <osku@127.(none)> | 2005-09-23 16:22:27 +0300 |
---|---|---|
committer | unknown <osku@127.(none)> | 2005-09-23 16:22:27 +0300 |
commit | e4b0b0d00cfb7e668f1890bbb050a476e45a1d5d (patch) | |
tree | 43f72da6760864b8d20d6e9cdf26fd07d9b15b08 /mysql-test/t/innodb.test | |
parent | abda6dc69fa6d1fb75cf5754eb71edd10baae12c (diff) | |
download | mariadb-git-e4b0b0d00cfb7e668f1890bbb050a476e45a1d5d.tar.gz |
Fix bug #3443, better foreign key error messsages.
innobase/dict/dict0dict.c:
Add 'add_newline' parameter to dict_print_info_on_foreign_key_in_create_format.
innobase/include/dict0dict.h:
Add 'add_newline' parameter to dict_print_info_on_foreign_key_in_create_format.
innobase/include/os0file.h:
Add os_file_read_string.
innobase/include/trx0trx.h:
Add trx_set_detailed_error and trx_set_detailed_error_from_file functions
and a detailed_error field to trx_struct.
innobase/include/ut0mem.h:
Add ut_strlcpy.
innobase/os/os0file.c:
Add os_file_read_string.
innobase/row/row0ins.c:
Add row_ins_set_detailed function and call it when needed.
Adapt to changes in dict_print_info_on_foreign_key_in_create_format.
innobase/trx/trx0trx.c:
Add trx_set_detailed_error and trx_set_detailed_error_from_file.
Clear trx->detailed_error in trx_create.
innobase/ut/ut0mem.c:
Add ut_strlcpy.
mysql-test/r/innodb.result:
Add new tests, adapt existing ones whose output was changed.
mysql-test/t/innodb.test:
Add new tests, adapt existing ones whose output was changed.
sql/ha_innodb.cc:
Add get_error_message.
Clear trx->detailed_error in start_stmt and external_lock.
sql/ha_innodb.h:
Add get_error_message.
sql/handler.cc:
Add special case code in print_error for HA_ERR_ROW_IS_REFERENCED and
HA_ERR_NO_REFERENCED_ROW.
Change SETMSG to point to new error messages.
sql/share/errmsg.txt:
Add ER_ROW_IS_REFERENCED_2 and ER_NO_REFERENCED_ROW_2.
Diffstat (limited to 'mysql-test/t/innodb.test')
-rw-r--r-- | mysql-test/t/innodb.test | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 94f33738c8c..d0ebcb9aee8 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -978,9 +978,9 @@ create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) insert into `t2`values ( 1 ) ; create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb; insert into `t3`values ( 1 ) ; ---error 1217 +--error 1451 delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; ---error 1217 +--error 1451 update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; --error 1054 update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; @@ -996,7 +996,7 @@ create table t1( foreign key(pid) references t1(id) on delete cascade) engine=innodb; insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6), (8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14); --- error 1217 +-- error 1451 delete from t1 where id=0; delete from t1 where id=15; delete from t1 where id=0; @@ -1482,3 +1482,39 @@ CREATE TEMPORARY TABLE t2 FOREIGN KEY (b) REFERENCES test.t1(id) ) ENGINE=InnoDB; DROP TABLE t1; + +# +# Test improved foreign key error messages (bug #3443) +# + +CREATE TABLE t1 +( + id INT PRIMARY KEY +) ENGINE=InnoDB; + +CREATE TABLE t2 +( + v INT, + CONSTRAINT c1 FOREIGN KEY (v) REFERENCES t1(id) +) ENGINE=InnoDB; + +--error 1452 +INSERT INTO t2 VALUES(2); + +INSERT INTO t1 VALUES(1); +INSERT INTO t2 VALUES(1); + +--error 1451 +DELETE FROM t1 WHERE id = 1; + +--error 1217 +DROP TABLE t1; + +SET FOREIGN_KEY_CHECKS=0; +DROP TABLE t1; +SET FOREIGN_KEY_CHECKS=1; + +--error 1452 +INSERT INTO t2 VALUES(3); + +DROP TABLE t2; |