mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	A query SET @@GLOBAL.binlog_format = ... returns an error when NDB is the default storage. This fails some tests invoking the set binlog_format explicitly. because the var turns to be read-only. In the following are files and method to fix if needed. t/ ndb_binlog_basic2.test # here the failure is benign rpl_rbr_to_sbr.test # does not check any ndb features => . # => not_ndb_default is enough rpl_row_basic_8partition.test # set binlog_format can be replaced rpl_switch_stm_row_mixed.test # does not check any ndb features => . # => not_ndb_default is enough two more invoking invoke extra/rpl_truncate_helper.test rpl_truncate_2myisam # to be fixed with not_ndb_default rpl_truncate_3innodb # same as above . # because there is a dedicated to ndb . . # rpl_truncate_7ndb* suit. Adapting/testing a new implement --source include/safe_set_to_maybe_ro_var.inc to avoid abort due to the error using binlog_format as application. BitKeeper/etc/ignore: Added mysql-test/t/rpl_truncate_4ndb.test to the ignore list mysql-test/r/rpl_row_basic_8partition.result: new results mysql-test/t/rpl_rbr_to_sbr.test: # does not check any ndb features => not_ndb_default is enough mysql-test/t/rpl_row_basic_8partition.test: set binlog_format can be read-only because of e.g default storage ndb. adapting/testing a new implement --source include/safe_set_to_maybe_ro_var.inc to avoid abort due to the error. Note, that it this particular test we could simply remove SET binlog_format because there is have_binlog_format_row require, as the test is about RBR. Futhermore utilizing safe_set_to_maybe_ro_var is redundat as well as long as we keep non_ndb_default guard. The latter is introduced because of ndb partitioning per-key limitation #19259: rpl_ndb_dd_partitions fails on solaris. The page is updated to refer to this test's. mysql-test/t/rpl_switch_stm_row_mixed.test: excluding ndb option, no ndb features mysql-test/t/rpl_truncate_2myisam.test: ndb checks truncate separately mysql-test/t/rpl_truncate_3innodb.test: ndb checks truncate separately mysql-test/include/safe_set_to_maybe_ro_var.inc: pseudo-macro to make read-only global/session vars "settable" in sense that SET var= val won't produce any error nor aborts testing.
		
			
				
	
	
		
			212 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
############################################################
 | 
						|
# Author: MATZ                                             #
 | 
						|
# Date: 2006-03-22                                         #
 | 
						|
# Purpose: See if replication of partition tables work     #
 | 
						|
# Most of this test is copied from the rpl_xxx2yyy tests,  #
 | 
						|
# but here we just test some simple basic replication of   #
 | 
						|
# partition tables with same engine (MyISAM) in both ends. #
 | 
						|
############################################################
 | 
						|
 | 
						|
--source include/have_row_based.inc
 | 
						|
--source include/have_binlog_format_row.inc
 | 
						|
--source include/have_partition.inc
 | 
						|
--source include/not_ndb_default.inc
 | 
						|
--source include/master-slave.inc
 | 
						|
connection master;
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
 | 
						|
let $maybe_ro_var = @@BINLOG_FORMAT;
 | 
						|
let $val4var = ROW;
 | 
						|
--source include/safe_set_to_maybe_ro_var.inc
 | 
						|
 | 
						|
--echo **** Partition RANGE testing ****
 | 
						|
 | 
						|
# Create table that is partitioned by range on year i.e. year(t) and
 | 
						|
# replicate basice operations such at insert, update delete between 2
 | 
						|
# different storage engines Alter table and ensure table is handled
 | 
						|
# Correctly on the slave
 | 
						|
# Note that the storage engine should not be explicit: the default
 | 
						|
# storage engine is used on master and slave.
 | 
						|
 | 
						|
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), 
 | 
						|
                 bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, 
 | 
						|
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
 | 
						|
                 y YEAR, t DATE)
 | 
						|
                 PARTITION BY RANGE (YEAR(t)) 
 | 
						|
                (PARTITION p0 VALUES LESS THAN (1901), 
 | 
						|
                 PARTITION p1 VALUES LESS THAN (1946),  
 | 
						|
                 PARTITION p2 VALUES LESS THAN (1966), 
 | 
						|
                 PARTITION p3 VALUES LESS THAN (1986), 
 | 
						|
                 PARTITION p4 VALUES LESS THAN (2005), 
 | 
						|
                 PARTITION p5 VALUES LESS THAN MAXVALUE);
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave --
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
# Check that simple Alter statements are replicated correctly
 | 
						|
ALTER TABLE t1 MODIFY vc TEXT;
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
# Perform basic operation on master and ensure replicated correctly
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
 | 
						|
########################################################
 | 
						|
 | 
						|
--echo **** Partition LIST testing ****
 | 
						|
 | 
						|
# Create table that is partitioned by list on id i.e. (2,4). Pretend
 | 
						|
# that we missed one and alter to add. Then replicate basice
 | 
						|
# operations such at insert, update delete between 2 different storage
 | 
						|
# engines Alter table and ensure table is handled Correctly on the
 | 
						|
# slave.
 | 
						|
 | 
						|
 | 
						|
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), 
 | 
						|
                 bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, 
 | 
						|
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
 | 
						|
                 y YEAR, t DATE)
 | 
						|
                 PARTITION BY LIST(id) 
 | 
						|
                (PARTITION p0 VALUES IN (2, 4), 
 | 
						|
                 PARTITION p1 VALUES IN (42, 142),
 | 
						|
                 PARTITION p2 VALUES IN (412));
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
# Perform basic operation on master and ensure replicated correctly
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
# Check that simple Alter statements are replicated correctly ---
 | 
						|
ALTER TABLE t1 MODIFY vc TEXT;
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
# Perform basic operation on master and ensure replicated correctly
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
 | 
						|
########################################################
 | 
						|
 | 
						|
--echo **** Partition HASH testing ****
 | 
						|
 | 
						|
# Create table that is partitioned by hash on year i.e. YEAR(t). Then
 | 
						|
# replicate basice operations such at insert, update delete between 2
 | 
						|
# different storage engines Alter table and ensure table is handled
 | 
						|
# Correctly on the slave
 | 
						|
 | 
						|
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), 
 | 
						|
                 bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, 
 | 
						|
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
 | 
						|
                 y YEAR, t DATE)
 | 
						|
                 PARTITION BY HASH( YEAR(t) ) 
 | 
						|
                 PARTITIONS 4; 
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
# Check that simple Alter statements are replicated correctly
 | 
						|
ALTER TABLE t1 MODIFY vc TEXT;
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
 | 
						|
########################################################
 | 
						|
 | 
						|
# This part does not work
 | 
						|
--echo **** Partition by KEY ****
 | 
						|
 | 
						|
# Create table that is partitioned by key on id with 4 parts.  Then
 | 
						|
# replicate basice operations such at insert, update delete between 2
 | 
						|
# different storage engines Alter table and ensure table is handled
 | 
						|
# Correctly on the slave
 | 
						|
 | 
						|
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), 
 | 
						|
                 bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, 
 | 
						|
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
 | 
						|
                 y YEAR, t DATE,PRIMARY KEY(id))
 | 
						|
                 PARTITION BY KEY() 
 | 
						|
                 PARTITIONS 4;
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
# Check that simple Alter statements are replicated correctly
 | 
						|
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total);
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
connection master;
 | 
						|
# Check that simple Alter statements are replicated correctly
 | 
						|
ALTER TABLE t1 MODIFY vc TEXT;
 | 
						|
 | 
						|
--echo --- On master ---
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--echo --- On slave ---
 | 
						|
sync_slave_with_master;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
--source include/rpl_multi_engine3.inc
 | 
						|
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
 | 
						|
# End of 5.1 test case
 |