ALTER TABLE IGNORE didn't ignore duplicates for unique add index for InnoDB

This commit is contained in:
Michael Widenius 2011-01-05 15:09:06 +02:00
parent 711b36732b
commit ab32ce9aa7
3 changed files with 26 additions and 0 deletions

View File

@ -2617,6 +2617,13 @@ rows 3
Extra Using index
DROP TABLE t1;
#
# ALTER TABLE IGNORE didn't ignore duplicates for unique add index
#
create table t1 (a int primary key, b int) engine = innodb;
insert into t1 values (1,1),(2,1);
alter ignore table t1 add unique `main` (b);
drop table t1;
#
End of 5.1 tests
#
# Test for bug #39932 "create table fails if column for FK is in different

View File

@ -840,6 +840,15 @@ CREATE INDEX b ON t1(a,b,c,d);
DROP TABLE t1;
--echo #
--echo # ALTER TABLE IGNORE didn't ignore duplicates for unique add index
--echo #
create table t1 (a int primary key, b int) engine = innodb;
insert into t1 values (1,1),(2,1);
alter ignore table t1 add unique `main` (b);
drop table t1;
--echo #

View File

@ -7136,6 +7136,16 @@ view_err:
/* Non-primary unique key. */
needed_online_flags|= HA_ONLINE_ADD_UNIQUE_INDEX;
needed_fast_flags|= HA_ONLINE_ADD_UNIQUE_INDEX_NO_WRITES;
if (ignore)
{
/*
If ignore is used, we have to remove all duplicate rows,
which require a full table copy.
*/
need_copy_table= ALTER_TABLE_DATA_CHANGED;
pk_changed= 2; // Don't change need_copy_table
break;
}
}
}
else