diff options
author | unknown <lars@mysql.com> | 2005-12-22 06:39:02 +0100 |
---|---|---|
committer | unknown <lars@mysql.com> | 2005-12-22 06:39:02 +0100 |
commit | 09346e6e2de57fadc94f70beb29eabe5186dbe62 (patch) | |
tree | 192a6c65973c50f6a436a8c6e6bb19efa2ed2419 /mysql-test/extra/rpl_tests/rpl_multi_update3.test | |
parent | 65c560e9b836953bba66307268430f0faf50ca3c (diff) | |
download | mariadb-git-09346e6e2de57fadc94f70beb29eabe5186dbe62.tar.gz |
WL#1012: All changes as one single changeset.
This includes both code and test cases.
BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17:
Delete: mysql-test/r/ctype_ucs_binlog.result
BitKeeper/deleted/.del-rpl_delete_all.result~7c050d592614b3f:
Delete: mysql-test/r/rpl_delete_all.result
BitKeeper/deleted/.del-rpl000013-slave.opt~18266ad8a2403e8d:
Delete: mysql-test/t/rpl000013-slave.opt
BitKeeper/deleted/.del-rpl_delete_all.test~700a1490277780e0:
Delete: mysql-test/t/rpl_delete_all.test
mysql-test/extra/binlog_tests/binlog.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/blackhole.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/ctype_cp932.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/drop_temp_table.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/insert_select-binlog.test:
Import patch wl1012.patch
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_ddl.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_deadlock.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_flsh_tbls.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_loaddata_m.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_log.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_multi_query.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_reset_slave.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_stm_000001.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_stm_EE_err.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_stm_charset.test:
Import patch wl1012.patch
mysql-test/extra/rpl_tests/rpl_user_variables.test:
Import patch wl1012.patch
mysql-test/r/binlog_stm_binlog.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_blackhole.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_ctype_cp932.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_ctype_ucs.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_drop_tmp_tbl.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_insert_select.result:
Import patch wl1012.patch
mysql-test/r/binlog_stm_mix_innodb_myisam.result:
Import patch wl1012.patch
mysql-test/r/rpl_000012.result:
Import patch wl1012.patch
mysql-test/r/rpl_000015.result:
Import patch wl1012.patch
mysql-test/r/rpl_deadlock_innodb.result:
Import patch wl1012.patch
mysql-test/r/rpl_flushlog_loop.result:
Import patch wl1012.patch
mysql-test/r/rpl_loaddata_s.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_000001.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_EE_err.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_charset.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_ddl.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_err_ignoredtable.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_flsh_tbls.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_loaddata_m.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_log.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_max_relay_size.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_multi_query.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_mystery22.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_reset_slave.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_rewrt_db.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_sp.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_timezone.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_until.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_user_variables.result:
Import patch wl1012.patch
mysql-test/r/rpl_stm_view.result:
Import patch wl1012.patch
mysql-test/t/binlog_row_binlog-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_000012.test:
Import patch wl1012.patch
mysql-test/t/rpl_000015-slave.sh:
Import patch wl1012.patch
mysql-test/t/rpl_000015.slave-mi:
Import patch wl1012.patch
mysql-test/t/rpl_000015.test:
Import patch wl1012.patch
mysql-test/t/rpl_deadlock_innodb-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_flushlog_loop-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_flushlog_loop-master.sh:
Import patch wl1012.patch
mysql-test/t/rpl_flushlog_loop-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_flushlog_loop-slave.sh:
Import patch wl1012.patch
mysql-test/t/rpl_flushlog_loop.test:
Import patch wl1012.patch
mysql-test/t/rpl_loaddata_s-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_loaddata_s.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_000001-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_err_ignoredtable-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_loaddata_m-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_log-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_log-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_mystery22.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_rewrt_db-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_rewrt_db.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_sp-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_sp-slave.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_sp.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_timezone-master.opt:
Import patch wl1012.patch
mysql-test/t/rpl_stm_timezone-slave.opt:
Import patch wl1012.patch
BUILD/SETUP.sh:
Import patch wl1012.patch
Makefile.am:
Import patch wl1012.patch
mysql-test/t/rpl_stm_timezone.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_until.test:
Import patch wl1012.patch
mysql-test/t/rpl_stm_view.test:
Import patch wl1012.patch
client/Makefile.am:
Import patch wl1012.patch
client/client_priv.h:
Import patch wl1012.patch
client/mysqlbinlog.cc:
Import patch wl1012.patch
configure.in:
Import patch wl1012.patch
include/Makefile.am:
Import patch wl1012.patch
include/base64.h:
Import patch wl1012.patch
include/config-win.h:
Import patch wl1012.patch
include/my_base.h:
Import patch wl1012.patch
include/my_global.h:
Import patch wl1012.patch
mysql-test/Makefile.am:
Import patch wl1012.patch
mysql-test/mysql-test-run.pl:
Import patch wl1012.patch
mysql-test/mysql-test-run.sh:
Import patch wl1012.patch
mysql-test/r/date_formats.result:
Import patch wl1012.patch
mysql-test/r/flush_block_commit.result:
Import patch wl1012.patch
mysql-test/r/innodb.result:
Import patch wl1012.patch
mysql-test/r/rpl000017.result:
Import patch wl1012.patch
mysql-test/r/rpl_change_master.result:
Import patch wl1012.patch
mysql-test/r/rpl_commit_after_flush.result:
Import patch wl1012.patch
mysql-test/r/rpl_create_database.result:
Import patch wl1012.patch
mysql-test/r/rpl_do_grant.result:
Import patch wl1012.patch
mysql-test/r/rpl_loaddata.result:
Import patch wl1012.patch
mysql-test/r/rpl_log_pos.result:
Import patch wl1012.patch
mysql-test/r/rpl_multi_delete.result:
Import patch wl1012.patch
mysql-test/r/rpl_multi_update.result:
Import patch wl1012.patch
mysql-test/r/rpl_openssl.result:
Import patch wl1012.patch
mysql-test/r/rpl_replicate_do.result:
Import patch wl1012.patch
mysql-test/r/rpl_rotate_logs.result:
Import patch wl1012.patch
mysql-test/r/rpl_server_id1.result:
Import patch wl1012.patch
mysql-test/r/rpl_server_id2.result:
Import patch wl1012.patch
mysql-test/r/rpl_temporary.result:
Import patch wl1012.patch
mysql-test/r/user_var-binlog.result:
Import patch wl1012.patch
mysql-test/t/create_select_tmp.test:
Import patch wl1012.patch
mysql-test/t/date_formats.test:
Import patch wl1012.patch
mysql-test/t/disabled.def:
Import patch wl1012.patch
mysql-test/t/innodb.test:
Import patch wl1012.patch
mysql-test/t/mysqlbinlog.test:
Import patch wl1012.patch
mysql-test/t/mysqlbinlog2.test:
Import patch wl1012.patch
mysql-test/t/rpl000002.test:
Import patch wl1012.patch
mysql-test/t/rpl000006.test:
Import patch wl1012.patch
mysql-test/t/rpl000013.test:
Import patch wl1012.patch
mysql-test/t/rpl000017.test:
Import patch wl1012.patch
mysql-test/t/rpl_auto_increment.test:
Import patch wl1012.patch
mysql-test/t/rpl_change_master.test:
Import patch wl1012.patch
mysql-test/t/rpl_commit_after_flush.test:
Import patch wl1012.patch
mysql-test/t/rpl_create_database.test:
Import patch wl1012.patch
mysql-test/t/rpl_do_grant.test:
Import patch wl1012.patch
mysql-test/t/rpl_drop.test:
Import patch wl1012.patch
mysql-test/t/rpl_empty_master_crash.test:
Import patch wl1012.patch
mysql-test/t/rpl_failed_optimize.test:
Import patch wl1012.patch
mysql-test/t/rpl_heap.test:
Import patch wl1012.patch
mysql-test/t/rpl_insert_id.test:
Import patch wl1012.patch
mysql-test/t/rpl_insert_ignore.test:
Import patch wl1012.patch
mysql-test/t/rpl_loaddata.test:
Import patch wl1012.patch
mysql-test/t/rpl_log_pos.test:
Import patch wl1012.patch
mysql-test/t/rpl_multi_delete.test:
Import patch wl1012.patch
mysql-test/t/rpl_multi_update.test:
Import patch wl1012.patch
mysql-test/t/rpl_multi_update2.test:
Import patch wl1012.patch
mysql-test/t/rpl_multi_update3.test:
Import patch wl1012.patch
mysql-test/t/rpl_openssl.test:
Import patch wl1012.patch
mysql-test/t/rpl_redirect.test:
Import patch wl1012.patch
mysql-test/t/rpl_relayrotate.test:
Import patch wl1012.patch
mysql-test/t/rpl_replicate_do.test:
Import patch wl1012.patch
mysql-test/t/rpl_rotate_logs.test:
Import patch wl1012.patch
mysql-test/t/rpl_server_id1.test:
Import patch wl1012.patch
mysql-test/t/rpl_sp_effects.test:
Import patch wl1012.patch
mysql-test/t/rpl_temporary.test:
Import patch wl1012.patch
mysql-test/t/rpl_trigger.test:
Import patch wl1012.patch
mysql-test/t/sp.test:
Import patch wl1012.patch
mysql-test/t/user_var-binlog.test:
Import patch wl1012.patch
mysys/Makefile.am:
Import patch wl1012.patch
mysys/base64.c:
Import patch wl1012.patch
sql/Makefile.am:
Import patch wl1012.patch
sql/ha_innodb.cc:
Import patch wl1012.patch
sql/ha_innodb.h:
Import patch wl1012.patch
sql/ha_partition.cc:
Import patch wl1012.patch
sql/handler.cc:
Import patch wl1012.patch
sql/handler.h:
Import patch wl1012.patch
sql/item_sum.cc:
Import patch wl1012.patch
sql/log.cc:
Import patch wl1012.patch
sql/log_event.cc:
Import patch wl1012.patch
sql/log_event.h:
Import patch wl1012.patch
sql/mysql_priv.h:
Import patch wl1012.patch
sql/mysqld.cc:
Import patch wl1012.patch
sql/rpl_filter.h:
Import patch wl1012.patch
sql/set_var.cc:
Import patch wl1012.patch
sql/share/errmsg.txt:
Import patch wl1012.patch
sql/slave.cc:
Import patch wl1012.patch
sql/slave.h:
Import patch wl1012.patch
sql/sp.cc:
Import patch wl1012.patch
sql/sp_head.cc:
Import patch wl1012.patch
sql/sql_acl.cc:
Import patch wl1012.patch
sql/sql_base.cc:
Import patch wl1012.patch
sql/sql_class.cc:
Import patch wl1012.patch
sql/sql_class.h:
Import patch wl1012.patch
sql/sql_delete.cc:
Import patch wl1012.patch
sql/sql_insert.cc:
Import patch wl1012.patch
sql/sql_lex.h:
Import patch wl1012.patch
sql/sql_list.h:
Import patch wl1012.patch
sql/sql_load.cc:
Import patch wl1012.patch
sql/sql_parse.cc:
Import patch wl1012.patch
sql/sql_plugin.cc:
Import patch wl1012.patch
sql/sql_rename.cc:
Import patch wl1012.patch
sql/sql_repl.h:
Import patch wl1012.patch
sql/sql_select.cc:
Import patch wl1012.patch
sql/sql_show.cc:
Import patch wl1012.patch
sql/sql_table.cc:
Import patch wl1012.patch
sql/sql_udf.cc:
Import patch wl1012.patch
sql/sql_union.cc:
Import patch wl1012.patch
sql/sql_update.cc:
Import patch wl1012.patch
sql/sql_yacc.yy:
Import patch wl1012.patch
sql/table.cc:
Import patch wl1012.patch
sql/table.h:
Import patch wl1012.patch
storage/innobase/include/lock0lock.h:
Import patch wl1012.patch
storage/innobase/include/row0mysql.h:
Import patch wl1012.patch
storage/innobase/include/row0vers.h:
Import patch wl1012.patch
storage/innobase/lock/lock0lock.c:
Import patch wl1012.patch
storage/innobase/row/row0mysql.c:
Import patch wl1012.patch
storage/innobase/row/row0sel.c:
Import patch wl1012.patch
storage/innobase/row/row0vers.c:
Import patch wl1012.patch
Diffstat (limited to 'mysql-test/extra/rpl_tests/rpl_multi_update3.test')
-rw-r--r-- | mysql-test/extra/rpl_tests/rpl_multi_update3.test | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/mysql-test/extra/rpl_tests/rpl_multi_update3.test b/mysql-test/extra/rpl_tests/rpl_multi_update3.test new file mode 100644 index 00000000000..90cc81cfd58 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_multi_update3.test @@ -0,0 +1,220 @@ +-- source include/master-slave.inc + +############################################################################## +# +# Let's verify that multi-update with a subselect does not cause the slave to crash +# (BUG#10442) +# +--disable_query_log +SELECT '-------- Test for BUG#9361 --------' as ""; +--enable_query_log + +eval CREATE TABLE t1 ( + a int unsigned not null auto_increment primary key, + b int unsigned +) ENGINE=$engine_type; + +eval CREATE TABLE t2 ( + a int unsigned not null auto_increment primary key, + b int unsigned +) ENGINE=$engine_type; + +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; + +sync_slave_with_master; +connection slave; +SELECT * FROM t1 ORDER BY a; +SELECT * FROM t2 ORDER BY a; + +connection master; +drop table t1,t2; + +############################################################################## +# +# Test for BUG#9361: +# Subselects should work inside multi-updates +# +--disable_query_log +SELECT '-------- Test 1 for BUG#9361 --------' as ""; +--enable_query_log + +connection master; + +--disable_warnings +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +--enable_warnings + +CREATE TABLE t1 ( + a1 char(30), + a2 int, + a3 int, + a4 char(30), + a5 char(30) +); + +CREATE TABLE t2 ( + b1 int, + b2 char(30) +); + +# Insert one row per table +INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar'); +INSERT INTO t2 VALUES (1, 'baz'); + +# This should update the row in t1 +UPDATE t1 a, t2 + SET a.a1 = 'No' + WHERE a.a2 = + (SELECT b1 + FROM t2 + WHERE b2 = 'baz') + AND a.a3 IS NULL + AND a.a4 = 'foo' + AND a.a5 = 'bar'; + +sync_slave_with_master; +connection slave; +SELECT * FROM t1; +SELECT * FROM t2; + +connection master; +DROP TABLE t1, t2; + +############################################################################## +# +# Second test for BUG#9361 +# + +--disable_query_log +SELECT '-------- Test 2 for BUG#9361 --------' as ""; +--enable_query_log + +connection master; + +--disable_warnings +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +--enable_warnings + +CREATE TABLE t1 ( + i INT, + j INT, + x INT, + y INT, + z INT +); + +CREATE TABLE t2 ( + i INT, + k INT, + x INT, + y INT, + z INT +); + +CREATE TABLE t3 ( + j INT, + k INT, + x INT, + y INT, + z INT +); + +INSERT INTO t1 VALUES ( 1, 2,13,14,15); +INSERT INTO t2 VALUES ( 1, 3,23,24,25); +INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36); + +UPDATE t1 AS a +INNER JOIN t2 AS b + ON a.i = b.i +INNER JOIN t3 AS c + ON a.j = c.j AND b.k = c.k +SET a.x = b.x, + a.y = b.y, + a.z = ( + SELECT sum(z) + FROM t3 + WHERE y = 34 + ) +WHERE b.x = 23; + +sync_slave_with_master; +connection slave; + +SELECT * FROM t1; + +connection master; +DROP TABLE t1, t2, t3; + +############################################################################## +# +# BUG#12618 +# +# TEST: Replication of a statement containing a join in a multi-update. + +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; + +CREATE TABLE t1 ( + idp int(11) NOT NULL default '0', + idpro int(11) default NULL, + price decimal(19,4) default NULL, + PRIMARY KEY (idp) +); + +CREATE TABLE t2 ( + idpro int(11) NOT NULL default '0', + price decimal(19,4) default NULL, + nbprice int(11) default NULL, + PRIMARY KEY (idpro) +); + +INSERT INTO t1 VALUES + (1,1,'3.0000'), + (2,2,'1.0000'), + (3,1,'1.0000'), + (4,1,'4.0000'), + (5,3,'2.0000'), + (6,2,'4.0000'); + +INSERT INTO t2 VALUES + (1,'0.0000',0), + (2,'0.0000',0), + (3,'0.0000',0); + +# This update sets t2 to the minimal prices for each product +update + t2 + join + ( select idpro, min(price) as min_price, count(*) as nbr_price + from t1 + where idpro>0 and price>0 + group by idpro + ) as table_price +on t2.idpro = table_price.idpro +set t2.price = table_price.min_price, + t2.nbprice = table_price.nbr_price; + +select "-- MASTER AFTER JOIN --" as ""; +select * from t1; +select * from t2; + +sync_slave_with_master; + +select "-- SLAVE AFTER JOIN --" as ""; +select * from t1; +select * from t2; + +# End of 4.1 tests |