#At file:///home/marty/MySQL/mysql-5.1-telco-6.3/
3105 Martin Skold 2009-10-15
Bug#48036: NDB: UPDATE IGNORE not working together with unique constraint: disable batching of updates if updating unique index, added test case
modified:
mysql-test/suite/ndb/r/ndb_update.result
mysql-test/suite/ndb/t/ndb_update.test
sql/ha_ndbcluster.cc
=== modified file 'mysql-test/suite/ndb/r/ndb_update.result'
--- a/mysql-test/suite/ndb/r/ndb_update.result 2008-12-05 10:59:32 +0000
+++ b/mysql-test/suite/ndb/r/ndb_update.result 2009-10-15 08:23:13 +0000
@@ -27,6 +27,9 @@ pk1 b c
0 0 0
2 2 2
4 1 1
+UPDATE t1 set c = 1 WHERE b IN(0,1,2,3,4);
+ERROR 23000: Duplicate entry '1' for key 'c'
+UPDATE IGNORE t1 set c = 1 WHERE b IN(0,1,2,3,4);
UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4;
ERROR 23000: Duplicate entry '2' for key 'c'
UPDATE IGNORE t1 set pk1 = 1, c = 2 where pk1 = 4;
=== modified file 'mysql-test/suite/ndb/t/ndb_update.test'
--- a/mysql-test/suite/ndb/t/ndb_update.test 2008-12-05 10:59:32 +0000
+++ b/mysql-test/suite/ndb/t/ndb_update.test 2009-10-15 08:23:13 +0000
@@ -29,6 +29,9 @@ UPDATE t1 set pk1 = 4 where pk1 = 2;
UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2;
select * from t1 order by pk1;
--error ER_DUP_ENTRY
+UPDATE t1 set c = 1 WHERE b IN(0,1,2,3,4);
+UPDATE IGNORE t1 set c = 1 WHERE b IN(0,1,2,3,4);
+--error ER_DUP_ENTRY
UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4;
UPDATE IGNORE t1 set pk1 = 1, c = 2 where pk1 = 4;
select * from t1 order by pk1;
=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc 2009-10-14 14:12:28 +0000
+++ b/sql/ha_ndbcluster.cc 2009-10-15 08:23:13 +0000
@@ -3874,6 +3874,12 @@ ha_ndbcluster::delete_row_conflict_fn(en
bool ha_ndbcluster::start_bulk_update()
{
DBUG_ENTER("ha_ndbcluster::start_bulk_update");
+ if (!m_use_write && m_ignore_dup_key)
+ {
+ DBUG_PRINT("info", ("Batching turned off as duplicate key is "
+ "ignored by using peek_row"));
+ DBUG_RETURN(TRUE);
+ }
DBUG_RETURN(FALSE);
}
| Thread |
|---|
| • bzr commit into mysql-5.1-telco-6.3 branch (Martin.Skold:3105) Bug#48036 | Martin Skold | 15 Oct |