mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Merge mysql.com:/Users/emurphy/src/bk-clean/mysql-4.1
into mysql.com:/Users/emurphy/src/work/mysql-4.1-bug10442
This commit is contained in:
commit
5031e9adc8
3 changed files with 83 additions and 8 deletions
42
mysql-test/r/rpl_multi_update3.result
Normal file
42
mysql-test/r/rpl_multi_update3.result
Normal file
|
@ -0,0 +1,42 @@
|
|||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (NULL, 0);
|
||||
INSERT INTO t1 SELECT NULL, 0 FROM t1;
|
||||
INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 1
|
||||
UPDATE t2, (SELECT a FROM t1) AS t SET t2.b = t.a+5 ;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 6
|
||||
2 6
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 6
|
||||
2 6
|
33
mysql-test/t/rpl_multi_update3.test
Normal file
33
mysql-test/t/rpl_multi_update3.test
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Let's verify that multi-update with a subselect does not cause the slave to crash
|
||||
# (BUG#10442)
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a int unsigned not null auto_increment primary key,
|
||||
b int unsigned
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t1 VALUES (NULL, 0);
|
||||
INSERT INTO t1 SELECT NULL, 0 FROM t1;
|
||||
|
||||
INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
|
||||
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
|
||||
UPDATE t2, (SELECT a FROM t1) AS t SET t2.b = t.a+5 ;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
|
|
@ -1943,6 +1943,14 @@ mysql_execute_command(THD *thd)
|
|||
if (tables || &lex->select_lex != lex->all_selects_list)
|
||||
mysql_reset_errors(thd);
|
||||
|
||||
/* When subselects or time_zone info is used in a query
|
||||
* we create a new TABLE_LIST containing all referenced tables
|
||||
* and set local variable 'tables' to point to this list. */
|
||||
if ((&lex->select_lex != lex->all_selects_list ||
|
||||
lex->time_zone_tables_used) &&
|
||||
lex->unit.create_total_list(thd, lex, &tables))
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
if (thd->slave_thread)
|
||||
{
|
||||
|
@ -1993,14 +2001,6 @@ mysql_execute_command(THD *thd)
|
|||
}
|
||||
#endif /* !HAVE_REPLICATION */
|
||||
|
||||
/* When subselects or time_zone info is used in a query
|
||||
* we create a new TABLE_LIST containing all referenced tables
|
||||
* and set local variable 'tables' to point to this list. */
|
||||
if ((&lex->select_lex != lex->all_selects_list ||
|
||||
lex->time_zone_tables_used) &&
|
||||
lex->unit.create_total_list(thd, lex, &tables))
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
/*
|
||||
When option readonly is set deny operations which change tables.
|
||||
Except for the replication thread and the 'super' users.
|
||||
|
|
Loading…
Add table
Reference in a new issue