1
0
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:
unknown
2004-06-25 15:12:13 +02:00
parent d57aeec9a1
commit c79039b861
3 changed files with 28 additions and 2 deletions

View File

@ -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);
}

View File

@ -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);

View File

@ -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;