mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +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)
|
if (tables || &lex->select_lex != lex->all_selects_list)
|
||||||
mysql_reset_errors(thd);
|
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
|
#ifdef HAVE_REPLICATION
|
||||||
if (thd->slave_thread)
|
if (thd->slave_thread)
|
||||||
{
|
{
|
||||||
|
@ -1993,14 +2001,6 @@ mysql_execute_command(THD *thd)
|
||||||
}
|
}
|
||||||
#endif /* !HAVE_REPLICATION */
|
#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.
|
When option readonly is set deny operations which change tables.
|
||||||
Except for the replication thread and the 'super' users.
|
Except for the replication thread and the 'super' users.
|
||||||
|
|
Loading…
Add table
Reference in a new issue