diff options
author | serg@serg.mylan <> | 2004-06-25 15:12:13 +0200 |
---|---|---|
committer | serg@serg.mylan <> | 2004-06-25 15:12:13 +0200 |
commit | 3b59dd1bd0e064dc40127e58c46af4c62f4a1b7b (patch) | |
tree | ab0efb23a703bc511f61c4ac63c0c4da1e8ce346 | |
parent | 02f411124d8bc9306074b8b64912de2e3d3c6b6a (diff) | |
download | mariadb-git-3b59dd1bd0e064dc40127e58c46af4c62f4a1b7b.tar.gz |
bug#4008 - merge table cannot determine what key caused "dupl. key" error
-rw-r--r-- | myisammrg/myrg_write.c | 4 | ||||
-rw-r--r-- | mysql-test/r/merge.result | 18 | ||||
-rw-r--r-- | mysql-test/t/merge.test | 8 |
3 files changed, 28 insertions, 2 deletions
diff --git a/myisammrg/myrg_write.c b/myisammrg/myrg_write.c index 0f191edc23c..532709e361d 100644 --- a/myisammrg/myrg_write.c +++ b/myisammrg/myrg_write.c @@ -22,9 +22,9 @@ int myrg_write(register MYRG_INFO *info, byte *rec) { /* [phi] MERGE_WRITE_DISABLED is handled by the else case */ if (info->merge_insert_method == MERGE_INSERT_TO_FIRST) - return mi_write(info->open_tables[0].table,rec); + return mi_write((info->current_table=info->open_tables)->table,rec); else if (info->merge_insert_method == MERGE_INSERT_TO_LAST) - return mi_write(info->end_table[-1].table,rec); + return mi_write((info->current_table=info->end_table-1)->table,rec); else /* unsupported insertion method */ return (my_errno= HA_ERR_WRONG_COMMAND); } diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 63e0a228aa5..83f8230f11c 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -544,6 +544,24 @@ insert into t1 values (99,NULL); select * from t4 where a+0 > 90; a b 99 1 +insert t5 values (1,1); +ERROR 23000: Duplicate entry '1-1' for key 1 +insert t6 values (2,1); +ERROR 23000: Duplicate entry '2-1' for key 1 +insert t5 values (1,1) on duplicate key update b=b+10; +insert t6 values (2,1) on duplicate key update b=b+20; +select * from t5 where a < 3; +a b +1 2 +1 3 +1 4 +1 5 +1 11 +2 2 +2 3 +2 4 +2 5 +2 21 drop table t6, t5, t4, t3, t2, t1; CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) ENGINE=MyISAM; INSERT INTO t1 VALUES (1,1), (2,1); diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 1f61e200613..cf55c26fb69 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -190,6 +190,14 @@ select * from t5 order by a,b; select * from t6 order by a,b; insert into t1 values (99,NULL); select * from t4 where a+0 > 90; +# bug#4008 - cannot determine a unique key that caused "dupl. key error" +--error 1062 +insert t5 values (1,1); +--error 1062 +insert t6 values (2,1); +insert t5 values (1,1) on duplicate key update b=b+10; +insert t6 values (2,1) on duplicate key update b=b+20; +select * from t5 where a < 3; drop table t6, t5, t4, t3, t2, t1; CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) ENGINE=MyISAM; |