Commit d4b77025 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/svoj/devel/mysql/BUG21381/mysql-4.1-engines

into  mysql.com:/home/svoj/devel/mysql/BUG21381/mysql-5.0-engines


mysql-test/r/ndb_update.result:
  Auto merged
mysql-test/t/ndb_update.test:
  Auto merged
sql/sql_update.cc:
  Manual merge.
parents 3ab74528 9387a593
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -31,3 +31,11 @@ pk1 b c
12	2	2
14	1	1
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a INT NOT NULL, UNIQUE(a)) ENGINE=ndbcluster;
INSERT INTO t1 VALUES(1),(2);
UPDATE IGNORE t1, t1 AS t1a SET t1.a=3;
SELECT a FROM t1 ORDER BY a;
a
1
3
DROP TABLE t1;
+9 −0
Original line number Diff line number Diff line
@@ -33,4 +33,13 @@ select * from t1 order by pk1;
DROP TABLE IF EXISTS t1;
--enable_warnings

#
# BUG#21381 - Engine not notified about multi-table UPDATE IGNORE
#
CREATE TABLE t1(a INT NOT NULL, UNIQUE(a)) ENGINE=ndbcluster;
INSERT INTO t1 VALUES(1),(2);
UPDATE IGNORE t1, t1 AS t1a SET t1.a=3;
SELECT a FROM t1 ORDER BY a;
DROP TABLE t1;

# End of 4.1 tests
+6 −0
Original line number Diff line number Diff line
@@ -1095,6 +1095,8 @@ multi_update::initialize_tables(JOIN *join)
    List<Item> temp_fields= *fields_for_table[cnt];
    ORDER     group;

    if (ignore)
      table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
    if (table == main_table)			// First table in join
    {
      if (safe_update_on_fly(join->join_tab, &temp_fields))
@@ -1216,7 +1218,11 @@ multi_update::~multi_update()
{
  TABLE_LIST *table;
  for (table= update_tables ; table; table= table->next_local)
  {
    table->table->no_keyread= table->table->no_cache= 0;
    if (ignore)
      table->table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
  }

  if (tmp_tables)
  {