mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
bug#4008 - merge table cannot determine what key caused "dupl. key" error
myisammrg/myrg_write.c: set info->current_table correctly mysql-test/r/merge.result: bug#4008 mysql-test/t/merge.test: bug#4008
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user