Allow optimzation of multi-table-update also for InnoDB tables

MEMORY is alias for HEAP for CREATE TABLE ... TYPE=HEAP
Fixed bug in multi-table-update where a row could be updated several times


mysql-test/r/heap.result:
  Test of CREATE TABLE ... type=MEMORY
mysql-test/r/innodb.result:
  Added multi-update-test
mysql-test/r/multi_update.result:
  Added multi-update-test
mysql-test/t/heap.test:
  Test of CREATE TABLE ... type=MEMORY
mysql-test/t/innodb.test:
  Added multi-update-test
mysql-test/t/multi_update.test:
  Added multi-update-test
sql/ha_innodb.h:
  Allow optimzation of multi-table-update also for InnoDB tables
sql/handler.h:
  Allow optimzation of multi-update also for InnoDB tables
sql/key.cc:
  After merge fix
sql/lex.h:
  MEMORY is alias for HEAP
sql/sql_test.cc:
  Fixed wrong printf
sql/sql_update.cc:
  Fixed bug in multi-table-update where a row could be updated several times
sql/sql_yacc.yy:
  MEMORY is alias for HEAP
This commit is contained in:
unknown 2003-03-19 00:45:44 +02:00
commit f45236de39
13 changed files with 313 additions and 48 deletions

View file

@ -224,3 +224,31 @@ INSERT INTO t3 VALUES (1,'jedan'),(2,'dva');
update t1,t2 set t1.naziv="aaaa" where t1.broj=t2.broj;
update t1,t2,t3 set t1.naziv="bbbb", t2.naziv="aaaa" where t1.broj=t2.broj and t2.broj=t3.broj;
drop table if exists t1,t2,t3;
#
# Test multi update with different join methods
#
CREATE TABLE t1 (a int not null primary key, b int not null, key (b));
CREATE TABLE t2 (a int not null primary key, b int not null, key (b));
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
# Full join, without key
update t1,t2 set t1.a=t1.a+100;
select * from t1;
# unique key
update t1,t2 set t1.a=t1.a+100 where t1.a=101;
select * from t1;
# ref key
update t1,t2 set t1.b=t1.b+10 where t1.b=2;
select * from t1;
# Range key (in t1)
update t1,t2 set t1.b=t1.b+2,t2.b=t1.b where t1.b between 3 and 5;
select * from t1;
select * from t2;
drop table t1,t2;