Loading mysql-test/r/ndb_update.result +9 −0 Original line number Diff line number Diff line Loading @@ -17,8 +17,17 @@ pk1 b c 0 0 0 2 2 2 4 1 1 UPDATE t1 set pk1 = 4 where pk1 = 2; ERROR 23000: Duplicate entry '4' for key 1 UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2; select * from t1 order by pk1; pk1 b c 0 0 0 2 2 2 4 1 1 UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4; ERROR 23000: Duplicate entry '' for key 0 UPDATE IGNORE t1 set pk1 = 1, c = 2 where pk1 = 4; select * from t1 order by pk1; pk1 b c 0 0 0 Loading mysql-test/t/ndb_update.test +5 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,12 @@ select * from t1 order by pk1; UPDATE t1 set pk1 = 4 where pk1 = 1; select * from t1 order by pk1; --error 1062 UPDATE t1 set pk1 = 4 where pk1 = 2; UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2; select * from t1 order by pk1; -- error 1062 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; UPDATE t1 set pk1 = pk1 + 10; select * from t1 order by pk1; Loading sql/ha_ndbcluster.cc +15 −0 Original line number Diff line number Diff line Loading @@ -2387,6 +2387,21 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data) uint i; DBUG_ENTER("update_row"); /* * If IGNORE the ignore constraint violations on primary and unique keys */ if (m_ignore_dup_key) { int peek_res= peek_indexed_rows(new_data); if (!peek_res) { DBUG_RETURN(HA_ERR_FOUND_DUPP_KEY); } if (peek_res != HA_ERR_KEY_NOT_FOUND) DBUG_RETURN(peek_res); } statistic_increment(thd->status_var.ha_update_count, &LOCK_status); if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE) { Loading Loading
mysql-test/r/ndb_update.result +9 −0 Original line number Diff line number Diff line Loading @@ -17,8 +17,17 @@ pk1 b c 0 0 0 2 2 2 4 1 1 UPDATE t1 set pk1 = 4 where pk1 = 2; ERROR 23000: Duplicate entry '4' for key 1 UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2; select * from t1 order by pk1; pk1 b c 0 0 0 2 2 2 4 1 1 UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4; ERROR 23000: Duplicate entry '' for key 0 UPDATE IGNORE t1 set pk1 = 1, c = 2 where pk1 = 4; select * from t1 order by pk1; pk1 b c 0 0 0 Loading
mysql-test/t/ndb_update.test +5 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,12 @@ select * from t1 order by pk1; UPDATE t1 set pk1 = 4 where pk1 = 1; select * from t1 order by pk1; --error 1062 UPDATE t1 set pk1 = 4 where pk1 = 2; UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2; select * from t1 order by pk1; -- error 1062 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; UPDATE t1 set pk1 = pk1 + 10; select * from t1 order by pk1; Loading
sql/ha_ndbcluster.cc +15 −0 Original line number Diff line number Diff line Loading @@ -2387,6 +2387,21 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data) uint i; DBUG_ENTER("update_row"); /* * If IGNORE the ignore constraint violations on primary and unique keys */ if (m_ignore_dup_key) { int peek_res= peek_indexed_rows(new_data); if (!peek_res) { DBUG_RETURN(HA_ERR_FOUND_DUPP_KEY); } if (peek_res != HA_ERR_KEY_NOT_FOUND) DBUG_RETURN(peek_res); } statistic_increment(thd->status_var.ha_update_count, &LOCK_status); if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE) { Loading