Commit c79039b8 authored by unknown's avatar unknown

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
parent d57aeec9
...@@ -22,9 +22,9 @@ int myrg_write(register MYRG_INFO *info, byte *rec) ...@@ -22,9 +22,9 @@ int myrg_write(register MYRG_INFO *info, byte *rec)
{ {
/* [phi] MERGE_WRITE_DISABLED is handled by the else case */ /* [phi] MERGE_WRITE_DISABLED is handled by the else case */
if (info->merge_insert_method == MERGE_INSERT_TO_FIRST) 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) 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 */ else /* unsupported insertion method */
return (my_errno= HA_ERR_WRONG_COMMAND); return (my_errno= HA_ERR_WRONG_COMMAND);
} }
...@@ -544,6 +544,24 @@ insert into t1 values (99,NULL); ...@@ -544,6 +544,24 @@ insert into t1 values (99,NULL);
select * from t4 where a+0 > 90; select * from t4 where a+0 > 90;
a b a b
99 1 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; 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; 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); INSERT INTO t1 VALUES (1,1), (2,1);
......
...@@ -190,6 +190,14 @@ select * from t5 order by a,b; ...@@ -190,6 +190,14 @@ select * from t5 order by a,b;
select * from t6 order by a,b; select * from t6 order by a,b;
insert into t1 values (99,NULL); insert into t1 values (99,NULL);
select * from t4 where a+0 > 90; 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; 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; CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) ENGINE=MyISAM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment