Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb
into mysql.com:/data2/mysql-5.1-new-ndb mysql-test/t/rpl_ndb_dd_advance.test: Auto merged mysql-test/t/rpl_ndb_stm_innodb.test: SCCS merged
This commit is contained in:
commit
ff53a75320
290
mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
Normal file
290
mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
#############################################
|
||||||
|
#Authors: TU and Jeb
|
||||||
|
#Date: 2007/04
|
||||||
|
#Purpose: Generic replication to cluster
|
||||||
|
# and ensuring that the ndb_apply_status
|
||||||
|
# table is updated.
|
||||||
|
#############################################
|
||||||
|
# Notes:
|
||||||
|
# include/select_ndb_apply_status.inc
|
||||||
|
# Selects out the log name, start & end pos
|
||||||
|
# from the ndb_apply_status table
|
||||||
|
#
|
||||||
|
# include/show_binlog_using_logname.inc
|
||||||
|
# To select out 1 row from offset 1
|
||||||
|
# from the start position in the binlog whose
|
||||||
|
# name is = log_name
|
||||||
|
#
|
||||||
|
# include/tpcb.inc
|
||||||
|
# Creates DATABASE tpcb, the tables and
|
||||||
|
# stored procedures for loading the DB
|
||||||
|
# and for running transactions against DB.
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo *** Test 1 ***
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
create table t1 (a int key, b int) engine innodb;
|
||||||
|
create table t2 (a int key, b int) engine innodb;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
alter table t1 engine ndb;
|
||||||
|
alter table t2 engine ndb;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# check binlog position without begin
|
||||||
|
connection master;
|
||||||
|
insert into t1 values (1,2);
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
# here is actually a bug, since there is no begin statement, the
|
||||||
|
# query is autocommitted, and end_pos shows end of the insert and not
|
||||||
|
# end of the commit
|
||||||
|
--replace_result $start_pos <start_pos>
|
||||||
|
--replace_column 5 #
|
||||||
|
--eval show binlog events from $start_pos limit 1
|
||||||
|
--echo
|
||||||
|
--replace_result $start_pos <start_pos> $end_pos <end_pos>
|
||||||
|
--replace_column 2 #
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||||
|
--eval show binlog events from $start_pos limit 1,1
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# check binlog position with begin
|
||||||
|
begin;
|
||||||
|
insert into t1 values (2,3);
|
||||||
|
insert into t2 values (3,4);
|
||||||
|
commit;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
--replace_result $start_pos <start_pos>
|
||||||
|
--replace_column 5 #
|
||||||
|
--eval show binlog events from $start_pos limit 1
|
||||||
|
--echo
|
||||||
|
--replace_result $start_pos <start_pos>
|
||||||
|
--replace_column 2 # 4 # 5 #
|
||||||
|
--eval show binlog events from $start_pos limit 1,2
|
||||||
|
--echo
|
||||||
|
--replace_result $start_pos <start_pos> $end_pos <end_pos>
|
||||||
|
--replace_column 2 #
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||||
|
--eval show binlog events from $start_pos limit 3,1
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP TABLE test.t1, test.t2;
|
||||||
|
--sync_slave_with_master
|
||||||
|
SHOW TABLES;
|
||||||
|
|
||||||
|
# Run in some transactions using stored procedures
|
||||||
|
# and ensure that the ndb_apply_status table is
|
||||||
|
# updated to show the transactions
|
||||||
|
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo *** Test 2 ***
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Create database/tables and stored procdures
|
||||||
|
connection master;
|
||||||
|
--source include/tpcb.inc
|
||||||
|
|
||||||
|
# Switch tables on slave to use NDB
|
||||||
|
--sync_slave_with_master
|
||||||
|
USE tpcb;
|
||||||
|
ALTER TABLE account ENGINE NDB;
|
||||||
|
ALTER TABLE branch ENGINE NDB;
|
||||||
|
ALTER TABLE teller ENGINE NDB;
|
||||||
|
ALTER TABLE history ENGINE NDB;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Load DB tpcb and run some transactions
|
||||||
|
connection master;
|
||||||
|
--disable_query_log
|
||||||
|
CALL tpcb.load();
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
let $run= 5;
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
START TRANSACTION;
|
||||||
|
--eval CALL tpcb.trans($rpl_format);
|
||||||
|
eval SET @my_errno= $mysql_errno;
|
||||||
|
let $run_good= `SELECT @my_errno = 0`;
|
||||||
|
let $run_bad= `SELECT @my_errno <> 0`;
|
||||||
|
if ($run_good)
|
||||||
|
{
|
||||||
|
COMMIT;
|
||||||
|
}
|
||||||
|
if ($run_bad)
|
||||||
|
{
|
||||||
|
ROLLBACK;
|
||||||
|
}
|
||||||
|
dec $run;
|
||||||
|
}
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
--source include/show_binlog_using_logname.inc
|
||||||
|
|
||||||
|
# Flush the logs on the master moving all
|
||||||
|
# Transaction to a new binlog and ensure
|
||||||
|
# that the ndb_apply_status table is updated
|
||||||
|
# to show the use of the new binlog.
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo ** Test 3 **
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Flush logs on master which should force it
|
||||||
|
# to switch to binlog #2
|
||||||
|
|
||||||
|
FLUSH LOGS;
|
||||||
|
|
||||||
|
# Run in some transaction to increase end pos in
|
||||||
|
# binlog
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
let $run= 5;
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
START TRANSACTION;
|
||||||
|
--eval CALL tpcb.trans($rpl_format);
|
||||||
|
eval SET @my_errno= $mysql_errno;
|
||||||
|
let $run_good= `SELECT @my_errno = 0`;
|
||||||
|
let $run_bad= `SELECT @my_errno <> 0`;
|
||||||
|
if ($run_good)
|
||||||
|
{
|
||||||
|
COMMIT;
|
||||||
|
}
|
||||||
|
if ($run_bad)
|
||||||
|
{
|
||||||
|
ROLLBACK;
|
||||||
|
}
|
||||||
|
dec $run;
|
||||||
|
}
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
--source include/show_binlog_using_logname.inc
|
||||||
|
|
||||||
|
# Now we reset both the master and the slave
|
||||||
|
# Run some more transaction and ensure
|
||||||
|
# that the ndb_apply_status is updated
|
||||||
|
# correctly
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo ** Test 4 **
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Reset both slave and master
|
||||||
|
# This should reset binlog to #1
|
||||||
|
--source include/master-slave-reset.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Run in some transactions and check
|
||||||
|
connection master;
|
||||||
|
--disable_query_log
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
let $run= 5;
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
START TRANSACTION;
|
||||||
|
--eval CALL tpcb.trans($rpl_format);
|
||||||
|
eval SET @my_errno= $mysql_errno;
|
||||||
|
let $run_good= `SELECT @my_errno = 0`;
|
||||||
|
let $run_bad= `SELECT @my_errno <> 0`;
|
||||||
|
if ($run_good)
|
||||||
|
{
|
||||||
|
COMMIT;
|
||||||
|
}
|
||||||
|
if ($run_bad)
|
||||||
|
{
|
||||||
|
ROLLBACK;
|
||||||
|
}
|
||||||
|
dec $run;
|
||||||
|
}
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
--source include/show_binlog_using_logname.inc
|
||||||
|
|
||||||
|
# Since we are doing replication, it is a good
|
||||||
|
# idea to check to make sure all data was
|
||||||
|
# Replicated correctly
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo *** DUMP MASTER & SLAVE FOR COMPARE ********
|
||||||
|
|
||||||
|
--exec $MYSQL_DUMP -n -t --compact --order-by-primary --skip-extended-insert tpcb account teller branch history > $MYSQLTEST_VARDIR/tmp/master_apply_status.sql
|
||||||
|
|
||||||
|
--exec $MYSQL_DUMP_SLAVE -n -t --compact --order-by-primary --skip-extended-insert tpcb account teller branch history > $MYSQLTEST_VARDIR/tmp/slave_apply_status.sql
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP DATABASE tpcb;
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
|
||||||
|
####### Commenting out until decision on Bug#27960 ###########
|
||||||
|
|
||||||
|
#--source include/select_ndb_apply_status.inc
|
||||||
|
|
||||||
|
#connection master;
|
||||||
|
#--eval SHOW BINLOG EVENTS in '$log_name' from $start_pos
|
||||||
|
#--source include/show_binlog_using_logname.inc
|
||||||
|
|
||||||
|
--echo ****** Do dumps compare ************
|
||||||
|
|
||||||
|
|
||||||
|
diff_files $MYSQLTEST_VARDIR/tmp/master_apply_status.sql $MYSQLTEST_VARDIR/tmp/slave_apply_status.sql;
|
||||||
|
|
||||||
|
## Note: Ths files should only get removed, if the above diff succeeds.
|
||||||
|
|
||||||
|
--exec rm $MYSQLTEST_VARDIR/tmp/master_apply_status.sql
|
||||||
|
--exec rm $MYSQLTEST_VARDIR/tmp/slave_apply_status.sql
|
||||||
|
|
||||||
|
|
||||||
|
# End of 5.1 Test
|
13
mysql-test/include/show_binlog_using_logname.inc
Normal file
13
mysql-test/include/show_binlog_using_logname.inc
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
########################################################
|
||||||
|
# Author: Jeb
|
||||||
|
# Date: 2007/04
|
||||||
|
# Purpose: To select out 1 row from offset 1
|
||||||
|
# from the start position in the binlog whose
|
||||||
|
# name is = log_name
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
--replace_result $start_pos <start_pos> $end_pos <end_pos>
|
||||||
|
--replace_column 2 #
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||||
|
--eval show binlog events in '$log_name' from $start_pos limit $off_set,1
|
||||||
|
|
155
mysql-test/include/tpcb.inc
Normal file
155
mysql-test/include/tpcb.inc
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
##################################################
|
||||||
|
# Author: Jeb
|
||||||
|
# Date: 2007/04
|
||||||
|
# Purpose: To create a tpcb database, tables and
|
||||||
|
# stored procedures to load the database
|
||||||
|
# and run transactions against the DB
|
||||||
|
##################################################
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS tpcb;
|
||||||
|
--enable_warnings
|
||||||
|
CREATE DATABASE tpcb;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
CREATE TABLE tpcb.account (id INT, bid INT, balance DECIMAL(10,2),
|
||||||
|
filler CHAR(255), PRIMARY KEY(id));
|
||||||
|
--echo
|
||||||
|
CREATE TABLE tpcb.branch (bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(bid));
|
||||||
|
--echo
|
||||||
|
CREATE TABLE tpcb.teller (tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(tid));
|
||||||
|
--echo
|
||||||
|
CREATE TABLE tpcb.history (id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
||||||
|
tid INT, bid INT, amount DECIMAL(10,2),
|
||||||
|
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
||||||
|
filler CHAR(80),PRIMARY KEY (id));
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo --- Create stored procedures & functions ---
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
delimiter |;
|
||||||
|
CREATE PROCEDURE tpcb.load()
|
||||||
|
BEGIN
|
||||||
|
DECLARE acct INT DEFAULT 100;
|
||||||
|
DECLARE brch INT DEFAULT 10;
|
||||||
|
DECLARE tell INT DEFAULT 100;
|
||||||
|
DECLARE tmp INT DEFAULT 10;
|
||||||
|
WHILE brch > 0 DO
|
||||||
|
SET tmp = 100;
|
||||||
|
WHILE tmp > 0 DO
|
||||||
|
INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT");
|
||||||
|
SET acct = acct - 1;
|
||||||
|
SET tmp = tmp -1;
|
||||||
|
END WHILE;
|
||||||
|
INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH");
|
||||||
|
SET brch = brch - 1;
|
||||||
|
END WHILE;
|
||||||
|
WHILE tell > 0 DO
|
||||||
|
INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER");
|
||||||
|
SET tell = tell - 1;
|
||||||
|
END WHILE;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE FUNCTION tpcb.account_id () RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE num INT;
|
||||||
|
DECLARE ran INT;
|
||||||
|
SELECT RAND() * 10 INTO ran;
|
||||||
|
IF (ran < 5)
|
||||||
|
THEN
|
||||||
|
SELECT RAND() * 10 INTO num;
|
||||||
|
ELSE
|
||||||
|
SELECT RAND() * 100 INTO num;
|
||||||
|
END IF;
|
||||||
|
IF (num < 1)
|
||||||
|
THEN
|
||||||
|
RETURN 1;
|
||||||
|
END IF;
|
||||||
|
RETURN num;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE FUNCTION tpcb.teller_id () RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE num INT;
|
||||||
|
DECLARE ran INT;
|
||||||
|
SELECT RAND() * 10 INTO ran;
|
||||||
|
IF (ran < 5)
|
||||||
|
THEN
|
||||||
|
SELECT RAND() * 10 INTO num;
|
||||||
|
ELSE
|
||||||
|
SELECT RAND() * 100 INTO num;
|
||||||
|
END IF;
|
||||||
|
IF (num < 1)
|
||||||
|
THEN
|
||||||
|
RETURN 1;
|
||||||
|
END IF;
|
||||||
|
RETURN num;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE PROCEDURE tpcb.trans(in format varchar(3))
|
||||||
|
BEGIN
|
||||||
|
DECLARE acct INT DEFAULT 0;
|
||||||
|
DECLARE brch INT DEFAULT 0;
|
||||||
|
DECLARE tell INT DEFAULT 0;
|
||||||
|
DECLARE bal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE amount DECIMAL(10,2) DEFAULT 1.00;
|
||||||
|
DECLARE test INT DEFAULT 0;
|
||||||
|
DECLARE bbal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE tbal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE local_uuid VARCHAR(255);
|
||||||
|
DECLARE local_user VARCHAR(255);
|
||||||
|
DECLARE local_time TIMESTAMP;
|
||||||
|
|
||||||
|
SELECT RAND() * 10 INTO test;
|
||||||
|
SELECT tpcb.account_id() INTO acct;
|
||||||
|
SELECT tpcb.teller_id() INTO tell;
|
||||||
|
|
||||||
|
SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct;
|
||||||
|
SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct;
|
||||||
|
SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell;
|
||||||
|
SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch;
|
||||||
|
|
||||||
|
IF (test < 5)
|
||||||
|
THEN
|
||||||
|
SET bal = bal + amount;
|
||||||
|
SET bbal = bbal + amount;
|
||||||
|
SET tbal = tbal + amount;
|
||||||
|
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
||||||
|
WHERE id = acct;
|
||||||
|
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
||||||
|
WHERE bid = brch;
|
||||||
|
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
||||||
|
WHERE tid = tell;
|
||||||
|
ELSE
|
||||||
|
SET bal = bal - amount;
|
||||||
|
SET bbal = bbal - amount;
|
||||||
|
SET tbal = tbal - amount;
|
||||||
|
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
||||||
|
WHERE id = acct;
|
||||||
|
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
||||||
|
WHERE bid = brch;
|
||||||
|
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
||||||
|
WHERE tid = tell;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF (format = 'SBR')
|
||||||
|
THEN
|
||||||
|
SET local_uuid=UUID();
|
||||||
|
SET local_user=USER();
|
||||||
|
SET local_time= NOW();
|
||||||
|
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user,
|
||||||
|
local_uuid,'completed trans');
|
||||||
|
ELSE
|
||||||
|
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, NOW(), USER(),
|
||||||
|
UUID(),'completed trans');
|
||||||
|
END IF;
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
--enable_query_log
|
||||||
|
--echo
|
||||||
|
--echo *** Stored Procedures Created ***
|
||||||
|
--echo
|
||||||
|
|
166
mysql-test/include/tpcb_disk_data.inc
Normal file
166
mysql-test/include/tpcb_disk_data.inc
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
##################################################
|
||||||
|
# Author: Jeb
|
||||||
|
# Date: 2007/05
|
||||||
|
# Purpose: To create a tpcb database using Disk Data,
|
||||||
|
# tables and stored procedures to load the database
|
||||||
|
# and run transactions against the DB
|
||||||
|
##################################################
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS tpcb;
|
||||||
|
--enable_warnings
|
||||||
|
CREATE DATABASE tpcb;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
eval CREATE TABLE tpcb.account
|
||||||
|
(id INT, bid INT, balance DECIMAL(10,2),
|
||||||
|
filler CHAR(255), PRIMARY KEY(id))
|
||||||
|
TABLESPACE $table_space STORAGE DISK
|
||||||
|
ENGINE=$engine_type;
|
||||||
|
--echo
|
||||||
|
eval CREATE TABLE tpcb.branch
|
||||||
|
(bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(bid))TABLESPACE $table_space STORAGE DISK
|
||||||
|
ENGINE=$engine_type;
|
||||||
|
--echo
|
||||||
|
eval CREATE TABLE tpcb.teller
|
||||||
|
(tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(tid)) TABLESPACE $table_space STORAGE DISK
|
||||||
|
ENGINE=$engine_type;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
eval CREATE TABLE tpcb.history
|
||||||
|
(id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
||||||
|
tid INT, bid INT, amount DECIMAL(10,2),
|
||||||
|
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
||||||
|
filler CHAR(80),PRIMARY KEY (id))
|
||||||
|
TABLESPACE $table_space STORAGE DISK
|
||||||
|
ENGINE=$engine_type;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo --- Create stored procedures & functions ---
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
delimiter |;
|
||||||
|
CREATE PROCEDURE tpcb.load()
|
||||||
|
BEGIN
|
||||||
|
DECLARE acct INT DEFAULT 100;
|
||||||
|
DECLARE brch INT DEFAULT 10;
|
||||||
|
DECLARE tell INT DEFAULT 100;
|
||||||
|
DECLARE tmp INT DEFAULT 10;
|
||||||
|
WHILE brch > 0 DO
|
||||||
|
SET tmp = 100;
|
||||||
|
WHILE tmp > 0 DO
|
||||||
|
INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT");
|
||||||
|
SET acct = acct - 1;
|
||||||
|
SET tmp = tmp -1;
|
||||||
|
END WHILE;
|
||||||
|
INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH");
|
||||||
|
SET brch = brch - 1;
|
||||||
|
END WHILE;
|
||||||
|
WHILE tell > 0 DO
|
||||||
|
INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER");
|
||||||
|
SET tell = tell - 1;
|
||||||
|
END WHILE;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE FUNCTION tpcb.account_id () RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE num INT;
|
||||||
|
DECLARE ran INT;
|
||||||
|
SELECT RAND() * 10 INTO ran;
|
||||||
|
IF (ran < 5)
|
||||||
|
THEN
|
||||||
|
SELECT RAND() * 10 INTO num;
|
||||||
|
ELSE
|
||||||
|
SELECT RAND() * 100 INTO num;
|
||||||
|
END IF;
|
||||||
|
IF (num < 1)
|
||||||
|
THEN
|
||||||
|
RETURN 1;
|
||||||
|
END IF;
|
||||||
|
RETURN num;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE FUNCTION tpcb.teller_id () RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE num INT;
|
||||||
|
DECLARE ran INT;
|
||||||
|
SELECT RAND() * 10 INTO ran;
|
||||||
|
IF (ran < 5)
|
||||||
|
THEN
|
||||||
|
SELECT RAND() * 10 INTO num;
|
||||||
|
ELSE
|
||||||
|
SELECT RAND() * 100 INTO num;
|
||||||
|
END IF;
|
||||||
|
IF (num < 1)
|
||||||
|
THEN
|
||||||
|
RETURN 1;
|
||||||
|
END IF;
|
||||||
|
RETURN num;
|
||||||
|
END|
|
||||||
|
|
||||||
|
CREATE PROCEDURE tpcb.trans(in format varchar(3))
|
||||||
|
BEGIN
|
||||||
|
DECLARE acct INT DEFAULT 0;
|
||||||
|
DECLARE brch INT DEFAULT 0;
|
||||||
|
DECLARE tell INT DEFAULT 0;
|
||||||
|
DECLARE bal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE amount DECIMAL(10,2) DEFAULT 1.00;
|
||||||
|
DECLARE test INT DEFAULT 0;
|
||||||
|
DECLARE bbal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE tbal DECIMAL(10,2) DEFAULT 0.0;
|
||||||
|
DECLARE local_uuid VARCHAR(255);
|
||||||
|
DECLARE local_user VARCHAR(255);
|
||||||
|
DECLARE local_time TIMESTAMP;
|
||||||
|
|
||||||
|
SELECT RAND() * 10 INTO test;
|
||||||
|
SELECT tpcb.account_id() INTO acct;
|
||||||
|
SELECT tpcb.teller_id() INTO tell;
|
||||||
|
|
||||||
|
SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct;
|
||||||
|
SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct;
|
||||||
|
SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell;
|
||||||
|
SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch;
|
||||||
|
|
||||||
|
IF (test < 5)
|
||||||
|
THEN
|
||||||
|
SET bal = bal + amount;
|
||||||
|
SET bbal = bbal + amount;
|
||||||
|
SET tbal = tbal + amount;
|
||||||
|
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
||||||
|
WHERE id = acct;
|
||||||
|
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
||||||
|
WHERE bid = brch;
|
||||||
|
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
||||||
|
WHERE tid = tell;
|
||||||
|
ELSE
|
||||||
|
SET bal = bal - amount;
|
||||||
|
SET bbal = bbal - amount;
|
||||||
|
SET tbal = tbal - amount;
|
||||||
|
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
||||||
|
WHERE id = acct;
|
||||||
|
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
||||||
|
WHERE bid = brch;
|
||||||
|
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
||||||
|
WHERE tid = tell;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF (format = 'SBR')
|
||||||
|
THEN
|
||||||
|
SET local_uuid=UUID();
|
||||||
|
SET local_user=USER();
|
||||||
|
SET local_time= NOW();
|
||||||
|
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user,
|
||||||
|
local_uuid,'completed trans');
|
||||||
|
ELSE
|
||||||
|
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, NOW(), USER(),
|
||||||
|
UUID(),'completed trans');
|
||||||
|
END IF;
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
--enable_query_log
|
||||||
|
--echo
|
||||||
|
--echo *** Stored Procedures Created ***
|
||||||
|
--echo
|
||||||
|
|
@ -56,6 +56,7 @@ undofile.dat UNDO LOG NULL lg1
|
|||||||
undofile02.dat UNDO LOG NULL lg1
|
undofile02.dat UNDO LOG NULL lg1
|
||||||
**** Do First Set of ALTERs in the master table ****
|
**** Do First Set of ALTERs in the master table ****
|
||||||
CREATE INDEX t1_i ON t1(c2, c3);
|
CREATE INDEX t1_i ON t1(c2, c3);
|
||||||
|
CREATE UNIQUE INDEX t1_i2 ON t1(c2);
|
||||||
ALTER TABLE t1 ADD c4 TIMESTAMP;
|
ALTER TABLE t1 ADD c4 TIMESTAMP;
|
||||||
ALTER TABLE t1 ADD c5 DOUBLE;
|
ALTER TABLE t1 ADD c5 DOUBLE;
|
||||||
ALTER TABLE t1 ADD INDEX (c5);
|
ALTER TABLE t1 ADD INDEX (c5);
|
||||||
@ -68,6 +69,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`,`c3`),
|
KEY `t1_i` (`c2`,`c3`),
|
||||||
KEY `c5` (`c5`)
|
KEY `c5` (`c5`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
@ -81,6 +83,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`,`c3`),
|
KEY `t1_i` (`c2`,`c3`),
|
||||||
KEY `c5` (`c5`)
|
KEY `c5` (`c5`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
@ -101,6 +104,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`,`c3`)
|
KEY `t1_i` (`c2`,`c3`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Show second set of ALTERs on SLAVE ****
|
**** Show second set of ALTERs on SLAVE ****
|
||||||
@ -113,6 +117,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`,`c3`)
|
KEY `t1_i` (`c2`,`c3`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Third and last set of alters for test1 ****
|
**** Third and last set of alters for test1 ****
|
||||||
@ -135,6 +140,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c3` blob,
|
`c3` blob,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`)
|
KEY `t1_i` (`c2`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
||||||
@ -153,8 +159,16 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c3` blob,
|
`c3` blob,
|
||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
|
UNIQUE KEY `t1_i2` (`c2`),
|
||||||
KEY `t1_i` (`c2`)
|
KEY `t1_i` (`c2`)
|
||||||
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
|
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
||||||
|
c1 c2 c3 c5
|
||||||
|
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
||||||
|
2 4.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
||||||
|
3 6.00 0000-00-00 00:00:00 NULL
|
||||||
|
4 8.00 0000-00-00 00:00:00 NULL
|
||||||
|
5 10.00 0000-00-00 00:00:00 NULL
|
||||||
SELECT * FROM t1 where c1 = 1;
|
SELECT * FROM t1 where c1 = 1;
|
||||||
c1 c2 c3 c5
|
c1 c2 c3 c5
|
||||||
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
||||||
@ -167,148 +181,44 @@ START SLAVE;
|
|||||||
CREATE TABLESPACE ts2
|
CREATE TABLESPACE ts2
|
||||||
ADD DATAFILE 'datafile03.dat'
|
ADD DATAFILE 'datafile03.dat'
|
||||||
USE LOGFILE GROUP lg1
|
USE LOGFILE GROUP lg1
|
||||||
INITIAL_SIZE 12M
|
INITIAL_SIZE 10M
|
||||||
ENGINE=NDB;
|
ENGINE=NDB;
|
||||||
ALTER TABLESPACE ts2
|
ALTER TABLESPACE ts2
|
||||||
ADD DATAFILE 'datafile04.dat'
|
ADD DATAFILE 'datafile04.dat'
|
||||||
INITIAL_SIZE 12M
|
INITIAL_SIZE 5M
|
||||||
ENGINE=NDB;
|
ENGINE=NDB;
|
||||||
DROP DATABASE IF EXISTS tpcb;
|
DROP DATABASE IF EXISTS tpcb;
|
||||||
Warnings:
|
|
||||||
Note 1008 Can't drop database 'tpcb'; database doesn't exist
|
|
||||||
CREATE DATABASE tpcb;
|
CREATE DATABASE tpcb;
|
||||||
*********** Create TPCB Tables *****************
|
|
||||||
CREATE TABLE tpcb.account
|
CREATE TABLE tpcb.account
|
||||||
(id INT, bid INT, balance DECIMAL(10,2),
|
(id INT, bid INT, balance DECIMAL(10,2),
|
||||||
filler CHAR(255), PRIMARY KEY(id))
|
filler CHAR(255), PRIMARY KEY(id))
|
||||||
TABLESPACE ts1 STORAGE DISK
|
|
||||||
ENGINE=NDB;
|
|
||||||
CREATE TABLE tpcb.branch
|
|
||||||
(bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
|
||||||
PRIMARY KEY(bid))
|
|
||||||
ENGINE=NDB;
|
|
||||||
CREATE TABLE tpcb.teller
|
|
||||||
(tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
|
||||||
PRIMARY KEY(tid))
|
|
||||||
TABLESPACE ts2 STORAGE DISK
|
TABLESPACE ts2 STORAGE DISK
|
||||||
ENGINE=NDB;
|
ENGINE=NDBCLUSTER;
|
||||||
CREATE TABLE tpcb.history
|
|
||||||
|
CREATE TABLE tpcb.branch
|
||||||
|
(bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(bid))TABLESPACE ts2 STORAGE DISK
|
||||||
|
ENGINE=NDBCLUSTER;
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.teller
|
||||||
|
(tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(tid)) TABLESPACE ts2 STORAGE DISK
|
||||||
|
ENGINE=NDBCLUSTER;
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.history
|
||||||
(id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
(id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
||||||
tid INT, bid INT, amount DECIMAL(10,2),
|
tid INT, bid INT, amount DECIMAL(10,2),
|
||||||
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
||||||
filler CHAR(80),PRIMARY KEY (id))
|
filler CHAR(80),PRIMARY KEY (id))
|
||||||
TABLESPACE ts2 STORAGE DISK
|
TABLESPACE ts2 STORAGE DISK
|
||||||
ENGINE=NDB;
|
ENGINE=NDBCLUSTER;
|
||||||
********* Create Procedures and Functions ************
|
|
||||||
CREATE PROCEDURE tpcb.load()
|
--- Create stored procedures & functions ---
|
||||||
BEGIN
|
|
||||||
DECLARE acct INT DEFAULT 1000;
|
|
||||||
DECLARE brch INT DEFAULT 100;
|
*** Stored Procedures Created ***
|
||||||
DECLARE tell INT DEFAULT 1000;
|
|
||||||
DECLARE tmp INT DEFAULT 100;
|
|
||||||
WHILE brch > 0 DO
|
|
||||||
SET tmp = 100;
|
|
||||||
WHILE tmp > 0 DO
|
|
||||||
INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT");
|
|
||||||
SET acct = acct - 1;
|
|
||||||
SET tmp = tmp -1;
|
|
||||||
END WHILE;
|
|
||||||
INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH");
|
|
||||||
SET brch = brch - 1;
|
|
||||||
END WHILE;
|
|
||||||
WHILE tell > 0 DO
|
|
||||||
INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER");
|
|
||||||
SET tell = tell - 1;
|
|
||||||
END WHILE;
|
|
||||||
END|
|
|
||||||
CREATE FUNCTION tpcb.account_id () RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE num INT;
|
|
||||||
DECLARE ran INT;
|
|
||||||
SELECT RAND() * 10 INTO ran;
|
|
||||||
IF (ran < 2)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 10 INTO num;
|
|
||||||
ELSEIF (ran < 4)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 100 INTO num;
|
|
||||||
ELSE
|
|
||||||
SELECT RAND() * 1000 INTO num;
|
|
||||||
END IF;
|
|
||||||
IF (num < 1)
|
|
||||||
THEN
|
|
||||||
RETURN 1;
|
|
||||||
END IF;
|
|
||||||
RETURN num;
|
|
||||||
END|
|
|
||||||
CREATE FUNCTION tpcb.teller_id () RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE num INT;
|
|
||||||
DECLARE ran INT;
|
|
||||||
SELECT RAND() * 10 INTO ran;
|
|
||||||
IF (ran < 2)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 10 INTO num;
|
|
||||||
ELSEIF (ran < 5)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 100 INTO num;
|
|
||||||
ELSE
|
|
||||||
SELECT RAND() * 1000 INTO num;
|
|
||||||
END IF;
|
|
||||||
IF (num < 1)
|
|
||||||
THEN
|
|
||||||
RETURN 1;
|
|
||||||
END IF;
|
|
||||||
RETURN num;
|
|
||||||
END|
|
|
||||||
CREATE PROCEDURE tpcb.trans()
|
|
||||||
BEGIN
|
|
||||||
DECLARE acct INT DEFAULT 0;
|
|
||||||
DECLARE brch INT DEFAULT 0;
|
|
||||||
DECLARE tell INT DEFAULT 0;
|
|
||||||
DECLARE bal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE amount DECIMAL(10,2) DEFAULT 1.00;
|
|
||||||
DECLARE test INT DEFAULT 0;
|
|
||||||
DECLARE bbal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE tbal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE local_uuid VARCHAR(255);
|
|
||||||
DECLARE local_user VARCHAR(255);
|
|
||||||
DECLARE local_time TIMESTAMP;
|
|
||||||
SELECT RAND() * 10 INTO test;
|
|
||||||
SELECT tpcb.account_id() INTO acct;
|
|
||||||
SELECT tpcb.teller_id() INTO tell;
|
|
||||||
SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct;
|
|
||||||
SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct;
|
|
||||||
SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell;
|
|
||||||
SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch;
|
|
||||||
IF (test < 5)
|
|
||||||
THEN
|
|
||||||
SET bal = bal + amount;
|
|
||||||
SET bbal = bbal + amount;
|
|
||||||
SET tbal = tbal + amount;
|
|
||||||
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
|
||||||
WHERE id = acct;
|
|
||||||
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
|
||||||
WHERE bid = brch;
|
|
||||||
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
|
||||||
WHERE tid = tell;
|
|
||||||
ELSE
|
|
||||||
SET bal = bal - amount;
|
|
||||||
SET bbal = bbal - amount;
|
|
||||||
SET tbal = tbal - amount;
|
|
||||||
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
|
||||||
WHERE id = acct;
|
|
||||||
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
|
||||||
WHERE bid = brch;
|
|
||||||
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
|
||||||
WHERE tid = tell;
|
|
||||||
END IF;
|
|
||||||
SET local_uuid=UUID();
|
|
||||||
SET local_user=USER();
|
|
||||||
SET local_time= NOW();
|
|
||||||
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user,
|
|
||||||
local_uuid,'completed trans');
|
|
||||||
END|
|
|
||||||
****** TEST 2 test time *********************************
|
****** TEST 2 test time *********************************
|
||||||
USE tpcb;
|
USE tpcb;
|
||||||
*********** Load up the database ******************
|
*********** Load up the database ******************
|
||||||
@ -316,11 +226,11 @@ CALL tpcb.load();
|
|||||||
********** Check load master and slave **************
|
********** Check load master and slave **************
|
||||||
SELECT COUNT(*) FROM account;
|
SELECT COUNT(*) FROM account;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
10000
|
1000
|
||||||
USE tpcb;
|
USE tpcb;
|
||||||
SELECT COUNT(*) FROM account;
|
SELECT COUNT(*) FROM account;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
10000
|
1000
|
||||||
******** Run in some transactions ***************
|
******** Run in some transactions ***************
|
||||||
***** Time to try slave sync ***********
|
***** Time to try slave sync ***********
|
||||||
**** Must make sure slave is clean *****
|
**** Must make sure slave is clean *****
|
||||||
@ -351,10 +261,10 @@ DROP LOGFILE GROUP lg1 ENGINE=NDB;
|
|||||||
********** Take a backup of the Master *************
|
********** Take a backup of the Master *************
|
||||||
SELECT COUNT(*) FROM history;
|
SELECT COUNT(*) FROM history;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
1000
|
100
|
||||||
SELECT COUNT(*) FROM history;
|
SELECT COUNT(*) FROM history;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
2000
|
200
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS mysql.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS mysql.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
||||||
DELETE FROM mysql.backup_info;
|
DELETE FROM mysql.backup_info;
|
||||||
LOAD DATA INFILE '../tmp.dat' INTO TABLE mysql.backup_info FIELDS TERMINATED BY ',';
|
LOAD DATA INFILE '../tmp.dat' INTO TABLE mysql.backup_info FIELDS TERMINATED BY ',';
|
||||||
@ -368,7 +278,7 @@ CREATE DATABASE tpcb;
|
|||||||
USE tpcb;
|
USE tpcb;
|
||||||
SELECT COUNT(*) FROM account;
|
SELECT COUNT(*) FROM account;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
10000
|
1000
|
||||||
***** Add some more records to master *********
|
***** Add some more records to master *********
|
||||||
***** Finsh the slave sync process *******
|
***** Finsh the slave sync process *******
|
||||||
@the_epoch:=MAX(epoch)
|
@the_epoch:=MAX(epoch)
|
||||||
@ -384,12 +294,12 @@ START SLAVE;
|
|||||||
USE tpcb;
|
USE tpcb;
|
||||||
SELECT COUNT(*) FROM history;
|
SELECT COUNT(*) FROM history;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4050
|
400
|
||||||
****** SLAVE ********
|
****** SLAVE ********
|
||||||
USE tpcb;
|
USE tpcb;
|
||||||
SELECT COUNT(*) FROM history;
|
SELECT COUNT(*) FROM history;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4050
|
400
|
||||||
*** DUMP MASTER & SLAVE FOR COMPARE ********
|
*** DUMP MASTER & SLAVE FOR COMPARE ********
|
||||||
*************** TEST 2 CLEANUP SECTION ********************
|
*************** TEST 2 CLEANUP SECTION ********************
|
||||||
DROP PROCEDURE IF EXISTS tpcb.load;
|
DROP PROCEDURE IF EXISTS tpcb.load;
|
||||||
|
129
mysql-test/r/rpl_ndb_mix_innodb.result
Normal file
129
mysql-test/r/rpl_ndb_mix_innodb.result
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
*** Test 1 ***
|
||||||
|
|
||||||
|
create table t1 (a int key, b int) engine innodb;
|
||||||
|
create table t2 (a int key, b int) engine innodb;
|
||||||
|
|
||||||
|
alter table t1 engine ndb;
|
||||||
|
alter table t2 engine ndb;
|
||||||
|
|
||||||
|
insert into t1 values (1,2);
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events from <start_pos> limit 1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 <start_pos> Query 1 # use `test`; insert into t1 values (1,2)
|
||||||
|
|
||||||
|
show binlog events from <start_pos> limit 1,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 445 COMMIT /* XID */
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t1 values (2,3);
|
||||||
|
insert into t2 values (3,4);
|
||||||
|
commit;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
show binlog events from <start_pos> limit 1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 <start_pos> Query 1 # use `test`; BEGIN
|
||||||
|
|
||||||
|
show binlog events from <start_pos> limit 1,2;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # use `test`; insert into t1 values (2,3)
|
||||||
|
master-bin.000001 # Query # # use `test`; insert into t2 values (3,4)
|
||||||
|
|
||||||
|
show binlog events from <start_pos> limit 3,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
DROP TABLE test.t1, test.t2;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
|
||||||
|
*** Test 2 ***
|
||||||
|
|
||||||
|
DROP DATABASE IF EXISTS tpcb;
|
||||||
|
CREATE DATABASE tpcb;
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.account (id INT, bid INT, balance DECIMAL(10,2),
|
||||||
|
filler CHAR(255), PRIMARY KEY(id));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.branch (bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(bid));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.teller (tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(tid));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.history (id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
||||||
|
tid INT, bid INT, amount DECIMAL(10,2),
|
||||||
|
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
||||||
|
filler CHAR(80),PRIMARY KEY (id));
|
||||||
|
|
||||||
|
--- Create stored procedures & functions ---
|
||||||
|
|
||||||
|
|
||||||
|
*** Stored Procedures Created ***
|
||||||
|
|
||||||
|
USE tpcb;
|
||||||
|
ALTER TABLE account ENGINE NDB;
|
||||||
|
ALTER TABLE branch ENGINE NDB;
|
||||||
|
ALTER TABLE teller ENGINE NDB;
|
||||||
|
ALTER TABLE history ENGINE NDB;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000001' from <start_pos> limit 9,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
** Test 3 **
|
||||||
|
|
||||||
|
FLUSH LOGS;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000002' from <start_pos> limit 9,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000002 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
** Test 4 **
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000001' from <start_pos> limit 9,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
*** DUMP MASTER & SLAVE FOR COMPARE ********
|
||||||
|
DROP DATABASE tpcb;
|
||||||
|
****** Do dumps compare ************
|
@ -4,34 +4,126 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
|
||||||
|
*** Test 1 ***
|
||||||
|
|
||||||
create table t1 (a int key, b int) engine innodb;
|
create table t1 (a int key, b int) engine innodb;
|
||||||
create table t2 (a int key, b int) engine innodb;
|
create table t2 (a int key, b int) engine innodb;
|
||||||
|
|
||||||
alter table t1 engine ndb;
|
alter table t1 engine ndb;
|
||||||
alter table t2 engine ndb;
|
alter table t2 engine ndb;
|
||||||
|
|
||||||
insert into t1 values (1,2);
|
insert into t1 values (1,2);
|
||||||
select @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status;
|
|
||||||
@start_pos:=start_pos @end_pos:=end_pos
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
<start_pos> <end_pos>
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
show binlog events from <start_pos> limit 1;
|
show binlog events from <start_pos> limit 1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 <start_pos> Query 1 # use `test`; insert into t1 values (1,2)
|
master-bin.000001 <start_pos> Query 1 # use `test`; insert into t1 values (1,2)
|
||||||
|
|
||||||
show binlog events from <start_pos> limit 1,1;
|
show binlog events from <start_pos> limit 1,1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Xid 1 445 COMMIT /* XID */
|
master-bin.000001 # Xid 1 445 COMMIT /* XID */
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
insert into t1 values (2,3);
|
insert into t1 values (2,3);
|
||||||
insert into t2 values (3,4);
|
insert into t2 values (3,4);
|
||||||
commit;
|
commit;
|
||||||
select @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status;
|
|
||||||
@start_pos:=start_pos @end_pos:=end_pos
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
<start_pos> <end_pos>
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
show binlog events from <start_pos> limit 1;
|
show binlog events from <start_pos> limit 1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 <start_pos> Query 1 # use `test`; BEGIN
|
master-bin.000001 <start_pos> Query 1 # use `test`; BEGIN
|
||||||
|
|
||||||
show binlog events from <start_pos> limit 1,2;
|
show binlog events from <start_pos> limit 1,2;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values (2,3)
|
master-bin.000001 # Query # # use `test`; insert into t1 values (2,3)
|
||||||
master-bin.000001 # Query # # use `test`; insert into t2 values (3,4)
|
master-bin.000001 # Query # # use `test`; insert into t2 values (3,4)
|
||||||
|
|
||||||
show binlog events from <start_pos> limit 3,1;
|
show binlog events from <start_pos> limit 3,1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
DROP TABLE test.t1, test.t2;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
|
||||||
|
*** Test 2 ***
|
||||||
|
|
||||||
|
DROP DATABASE IF EXISTS tpcb;
|
||||||
|
CREATE DATABASE tpcb;
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.account (id INT, bid INT, balance DECIMAL(10,2),
|
||||||
|
filler CHAR(255), PRIMARY KEY(id));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.branch (bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(bid));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.teller (tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
||||||
|
PRIMARY KEY(tid));
|
||||||
|
|
||||||
|
CREATE TABLE tpcb.history (id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
||||||
|
tid INT, bid INT, amount DECIMAL(10,2),
|
||||||
|
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
||||||
|
filler CHAR(80),PRIMARY KEY (id));
|
||||||
|
|
||||||
|
--- Create stored procedures & functions ---
|
||||||
|
|
||||||
|
|
||||||
|
*** Stored Procedures Created ***
|
||||||
|
|
||||||
|
USE tpcb;
|
||||||
|
ALTER TABLE account ENGINE NDB;
|
||||||
|
ALTER TABLE branch ENGINE NDB;
|
||||||
|
ALTER TABLE teller ENGINE NDB;
|
||||||
|
ALTER TABLE history ENGINE NDB;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000001' from <start_pos> limit 6,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
** Test 3 **
|
||||||
|
|
||||||
|
FLUSH LOGS;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000002' from <start_pos> limit 6,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000002 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
** Test 4 **
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
|
||||||
|
from mysql.ndb_apply_status;
|
||||||
|
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
|
||||||
|
<log_name> <start_pos> <end_pos>
|
||||||
|
|
||||||
|
show binlog events in 'master-bin.000001' from <start_pos> limit 6,1;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
|
||||||
|
|
||||||
|
*** DUMP MASTER & SLAVE FOR COMPARE ********
|
||||||
|
DROP DATABASE tpcb;
|
||||||
|
****** Do dumps compare ************
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
--source include/have_binlog_format_row.inc
|
--source include/have_binlog_format_row.inc
|
||||||
--source include/ndb_default_cluster.inc
|
--source include/ndb_default_cluster.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
--source include/big_test.inc
|
#--source include/big_test.inc
|
||||||
#--source include/have_ndb_extra.inc
|
#--source include/have_ndb_extra.inc
|
||||||
--source include/ndb_master-slave.inc
|
--source include/ndb_master-slave.inc
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ SELECT DISTINCT FILE_NAME, FILE_TYPE, TABLESPACE_NAME, LOGFILE_GROUP_NAME
|
|||||||
connection master;
|
connection master;
|
||||||
CREATE INDEX t1_i ON t1(c2, c3);
|
CREATE INDEX t1_i ON t1(c2, c3);
|
||||||
#Bug 18039
|
#Bug 18039
|
||||||
#CREATE UNIQUE INDEX t1_i2 ON t1(c2);
|
CREATE UNIQUE INDEX t1_i2 ON t1(c2);
|
||||||
ALTER TABLE t1 ADD c4 TIMESTAMP;
|
ALTER TABLE t1 ADD c4 TIMESTAMP;
|
||||||
ALTER TABLE t1 ADD c5 DOUBLE;
|
ALTER TABLE t1 ADD c5 DOUBLE;
|
||||||
ALTER TABLE t1 ADD INDEX (c5);
|
ALTER TABLE t1 ADD INDEX (c5);
|
||||||
@ -170,7 +170,7 @@ SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
|||||||
connection slave;
|
connection slave;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
# Bug 18094
|
# Bug 18094
|
||||||
#SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
||||||
SELECT * FROM t1 where c1 = 1;
|
SELECT * FROM t1 where c1 = 1;
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
@ -198,163 +198,19 @@ connection master;
|
|||||||
CREATE TABLESPACE ts2
|
CREATE TABLESPACE ts2
|
||||||
ADD DATAFILE 'datafile03.dat'
|
ADD DATAFILE 'datafile03.dat'
|
||||||
USE LOGFILE GROUP lg1
|
USE LOGFILE GROUP lg1
|
||||||
INITIAL_SIZE 12M
|
INITIAL_SIZE 10M
|
||||||
ENGINE=NDB;
|
ENGINE=NDB;
|
||||||
|
|
||||||
ALTER TABLESPACE ts2
|
ALTER TABLESPACE ts2
|
||||||
ADD DATAFILE 'datafile04.dat'
|
ADD DATAFILE 'datafile04.dat'
|
||||||
INITIAL_SIZE 12M
|
INITIAL_SIZE 5M
|
||||||
ENGINE=NDB;
|
ENGINE=NDB;
|
||||||
|
|
||||||
###### CLEAN UP SECTION ##############
|
let engine_type=NDBCLUSTER;
|
||||||
DROP DATABASE IF EXISTS tpcb;
|
let table_space=ts2;
|
||||||
CREATE DATABASE tpcb;
|
let format='RBR';
|
||||||
######## Creat Table Section #########
|
|
||||||
--echo *********** Create TPCB Tables *****************
|
|
||||||
CREATE TABLE tpcb.account
|
|
||||||
(id INT, bid INT, balance DECIMAL(10,2),
|
|
||||||
filler CHAR(255), PRIMARY KEY(id))
|
|
||||||
TABLESPACE ts1 STORAGE DISK
|
|
||||||
ENGINE=NDB;
|
|
||||||
|
|
||||||
CREATE TABLE tpcb.branch
|
--source include/tpcb_disk_data.inc
|
||||||
(bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
|
||||||
PRIMARY KEY(bid))
|
|
||||||
ENGINE=NDB;
|
|
||||||
|
|
||||||
CREATE TABLE tpcb.teller
|
|
||||||
(tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
|
|
||||||
PRIMARY KEY(tid))
|
|
||||||
TABLESPACE ts2 STORAGE DISK
|
|
||||||
ENGINE=NDB;
|
|
||||||
|
|
||||||
CREATE TABLE tpcb.history
|
|
||||||
(id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
|
|
||||||
tid INT, bid INT, amount DECIMAL(10,2),
|
|
||||||
tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
|
|
||||||
filler CHAR(80),PRIMARY KEY (id))
|
|
||||||
TABLESPACE ts2 STORAGE DISK
|
|
||||||
ENGINE=NDB;
|
|
||||||
|
|
||||||
--echo ********* Create Procedures and Functions ************
|
|
||||||
delimiter |;
|
|
||||||
CREATE PROCEDURE tpcb.load()
|
|
||||||
BEGIN
|
|
||||||
DECLARE acct INT DEFAULT 1000;
|
|
||||||
DECLARE brch INT DEFAULT 100;
|
|
||||||
DECLARE tell INT DEFAULT 1000;
|
|
||||||
DECLARE tmp INT DEFAULT 100;
|
|
||||||
WHILE brch > 0 DO
|
|
||||||
SET tmp = 100;
|
|
||||||
WHILE tmp > 0 DO
|
|
||||||
INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT");
|
|
||||||
SET acct = acct - 1;
|
|
||||||
SET tmp = tmp -1;
|
|
||||||
END WHILE;
|
|
||||||
INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH");
|
|
||||||
SET brch = brch - 1;
|
|
||||||
END WHILE;
|
|
||||||
WHILE tell > 0 DO
|
|
||||||
INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER");
|
|
||||||
SET tell = tell - 1;
|
|
||||||
END WHILE;
|
|
||||||
END|
|
|
||||||
|
|
||||||
CREATE FUNCTION tpcb.account_id () RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE num INT;
|
|
||||||
DECLARE ran INT;
|
|
||||||
SELECT RAND() * 10 INTO ran;
|
|
||||||
IF (ran < 2)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 10 INTO num;
|
|
||||||
ELSEIF (ran < 4)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 100 INTO num;
|
|
||||||
ELSE
|
|
||||||
SELECT RAND() * 1000 INTO num;
|
|
||||||
END IF;
|
|
||||||
IF (num < 1)
|
|
||||||
THEN
|
|
||||||
RETURN 1;
|
|
||||||
END IF;
|
|
||||||
RETURN num;
|
|
||||||
END|
|
|
||||||
|
|
||||||
CREATE FUNCTION tpcb.teller_id () RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE num INT;
|
|
||||||
DECLARE ran INT;
|
|
||||||
SELECT RAND() * 10 INTO ran;
|
|
||||||
IF (ran < 2)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 10 INTO num;
|
|
||||||
ELSEIF (ran < 5)
|
|
||||||
THEN
|
|
||||||
SELECT RAND() * 100 INTO num;
|
|
||||||
ELSE
|
|
||||||
SELECT RAND() * 1000 INTO num;
|
|
||||||
END IF;
|
|
||||||
IF (num < 1)
|
|
||||||
THEN
|
|
||||||
RETURN 1;
|
|
||||||
END IF;
|
|
||||||
RETURN num;
|
|
||||||
END|
|
|
||||||
|
|
||||||
CREATE PROCEDURE tpcb.trans()
|
|
||||||
BEGIN
|
|
||||||
DECLARE acct INT DEFAULT 0;
|
|
||||||
DECLARE brch INT DEFAULT 0;
|
|
||||||
DECLARE tell INT DEFAULT 0;
|
|
||||||
DECLARE bal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE amount DECIMAL(10,2) DEFAULT 1.00;
|
|
||||||
DECLARE test INT DEFAULT 0;
|
|
||||||
DECLARE bbal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE tbal DECIMAL(10,2) DEFAULT 0.0;
|
|
||||||
DECLARE local_uuid VARCHAR(255);
|
|
||||||
DECLARE local_user VARCHAR(255);
|
|
||||||
DECLARE local_time TIMESTAMP;
|
|
||||||
|
|
||||||
SELECT RAND() * 10 INTO test;
|
|
||||||
SELECT tpcb.account_id() INTO acct;
|
|
||||||
SELECT tpcb.teller_id() INTO tell;
|
|
||||||
|
|
||||||
SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct;
|
|
||||||
SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct;
|
|
||||||
SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell;
|
|
||||||
SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch;
|
|
||||||
|
|
||||||
IF (test < 5)
|
|
||||||
THEN
|
|
||||||
SET bal = bal + amount;
|
|
||||||
SET bbal = bbal + amount;
|
|
||||||
SET tbal = tbal + amount;
|
|
||||||
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
|
||||||
WHERE id = acct;
|
|
||||||
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
|
||||||
WHERE bid = brch;
|
|
||||||
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
|
||||||
WHERE tid = tell;
|
|
||||||
ELSE
|
|
||||||
SET bal = bal - amount;
|
|
||||||
SET bbal = bbal - amount;
|
|
||||||
SET tbal = tbal - amount;
|
|
||||||
UPDATE tpcb.account SET balance = bal, filler = 'account updated'
|
|
||||||
WHERE id = acct;
|
|
||||||
UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
|
|
||||||
WHERE bid = brch;
|
|
||||||
UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
|
|
||||||
WHERE tid = tell;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
SET local_uuid=UUID();
|
|
||||||
SET local_user=USER();
|
|
||||||
SET local_time= NOW();
|
|
||||||
INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user,
|
|
||||||
local_uuid,'completed trans');
|
|
||||||
END|
|
|
||||||
delimiter ;|
|
|
||||||
|
|
||||||
--echo ****** TEST 2 test time *********************************
|
--echo ****** TEST 2 test time *********************************
|
||||||
USE tpcb;
|
USE tpcb;
|
||||||
@ -372,15 +228,16 @@ SELECT COUNT(*) FROM account;
|
|||||||
--echo ******** Run in some transactions ***************
|
--echo ******** Run in some transactions ***************
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
let $j= 1000;
|
let $j= 100;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
while ($j)
|
while ($j)
|
||||||
{
|
{
|
||||||
CALL tpcb.trans();
|
eval CALL tpcb.trans($format);
|
||||||
dec $j;
|
dec $j;
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
|
|
||||||
--echo ***** Time to try slave sync ***********
|
--echo ***** Time to try slave sync ***********
|
||||||
--echo **** Must make sure slave is clean *****
|
--echo **** Must make sure slave is clean *****
|
||||||
--connection slave
|
--connection slave
|
||||||
@ -421,11 +278,11 @@ connection master;
|
|||||||
|
|
||||||
SELECT COUNT(*) FROM history;
|
SELECT COUNT(*) FROM history;
|
||||||
|
|
||||||
let $j= 1000;
|
let $j= 100;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
while ($j)
|
while ($j)
|
||||||
{
|
{
|
||||||
CALL tpcb.trans();
|
eval CALL tpcb.trans($format);
|
||||||
dec $j;
|
dec $j;
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
@ -464,11 +321,11 @@ SELECT COUNT(*) FROM account;
|
|||||||
|
|
||||||
--echo ***** Add some more records to master *********
|
--echo ***** Add some more records to master *********
|
||||||
connection master;
|
connection master;
|
||||||
let $j= 1000;
|
let $j= 100;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
while ($j)
|
while ($j)
|
||||||
{
|
{
|
||||||
CALL tpcb.trans();
|
eval CALL tpcb.trans($format);
|
||||||
dec $j;
|
dec $j;
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
@ -484,17 +341,18 @@ while ($j)
|
|||||||
--echo ***** Finsh the slave sync process *******
|
--echo ***** Finsh the slave sync process *******
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
# 1. 2. 3.
|
# 1. 2. 3.
|
||||||
|
--sync_slave_with_master
|
||||||
--source include/ndb_setup_slave.inc
|
--source include/ndb_setup_slave.inc
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
# 4.
|
# 4.
|
||||||
--echo * 4. *
|
--echo * 4. *
|
||||||
connection master;
|
connection master;
|
||||||
let $j= 1000;
|
let $j= 100;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
while ($j)
|
while ($j)
|
||||||
{
|
{
|
||||||
CALL tpcb.trans();
|
eval CALL tpcb.trans($format);
|
||||||
dec $j;
|
dec $j;
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
@ -507,15 +365,6 @@ START SLAVE;
|
|||||||
--echo **** We should be ready to continue on *************
|
--echo **** We should be ready to continue on *************
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
let $j= 50;
|
|
||||||
--disable_query_log
|
|
||||||
while ($j)
|
|
||||||
{
|
|
||||||
CALL tpcb.trans();
|
|
||||||
dec $j;
|
|
||||||
}
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
--echo ****** Let's make sure we match *******
|
--echo ****** Let's make sure we match *******
|
||||||
--echo ***** MASTER *******
|
--echo ***** MASTER *******
|
||||||
USE tpcb;
|
USE tpcb;
|
||||||
|
1
mysql-test/t/rpl_ndb_mix_innodb-master.opt
Normal file
1
mysql-test/t/rpl_ndb_mix_innodb-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--innodb --default-storage-engine=innodb
|
36
mysql-test/t/rpl_ndb_mix_innodb.test
Normal file
36
mysql-test/t/rpl_ndb_mix_innodb.test
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#############################################
|
||||||
|
#Authors: TU and Jeb
|
||||||
|
#Date: 2007/04
|
||||||
|
#Purpose: Generic replication to cluster
|
||||||
|
# and ensuring that the ndb_apply_status
|
||||||
|
# table is updated.
|
||||||
|
#############################################
|
||||||
|
# Notes:
|
||||||
|
# include/select_ndb_apply_status.inc
|
||||||
|
# Selects out the log name, start & end pos
|
||||||
|
# from the ndb_apply_status table
|
||||||
|
#
|
||||||
|
# include/show_binlog_using_logname.inc
|
||||||
|
# To select out 1 row from offset 1
|
||||||
|
# from the start position in the binlog whose
|
||||||
|
# name is = log_name
|
||||||
|
#
|
||||||
|
# include/tpcb.inc
|
||||||
|
# Creates DATABASE tpcb, the tables and
|
||||||
|
# stored procedures for loading the DB
|
||||||
|
# and for running transactions against DB.
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
|
||||||
|
## Includes ##
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
--source include/have_ndb.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_binlog_format_mixed.inc
|
||||||
|
--source include/master-slave.inc
|
||||||
|
--enable_query_log
|
||||||
|
let $off_set = 9;
|
||||||
|
let $rpl_format = 'MIX';
|
||||||
|
--source extra/rpl_tests/rpl_ndb_apply_status.test
|
||||||
|
|
@ -1 +1 @@
|
|||||||
--innodb
|
--innodb --default-storage-engine=innodb
|
||||||
|
@ -1,62 +1,35 @@
|
|||||||
|
#############################################
|
||||||
|
#Authors: TU and Jeb
|
||||||
|
#Date: 2007/04
|
||||||
|
#Purpose: Generic replication to cluster
|
||||||
|
# and ensuring that the ndb_apply_status
|
||||||
|
# table is updated.
|
||||||
|
#############################################
|
||||||
|
# Notes:
|
||||||
|
# include/select_ndb_apply_status.inc
|
||||||
|
# Selects out the log name, start & end pos
|
||||||
|
# from the ndb_apply_status table
|
||||||
|
#
|
||||||
|
# include/show_binlog_using_logname.inc
|
||||||
|
# To select out 1 row from offset 1
|
||||||
|
# from the start position in the binlog whose
|
||||||
|
# name is = log_name
|
||||||
|
#
|
||||||
|
# include/tpcb.inc
|
||||||
|
# Creates DATABASE tpcb, the tables and
|
||||||
|
# stored procedures for loading the DB
|
||||||
|
# and for running transactions against DB.
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
|
||||||
|
## Includes ##
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
--source include/have_ndb.inc
|
--source include/have_ndb.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_binlog_format_mixed_or_statement.inc
|
--source include/have_binlog_format_statement.inc
|
||||||
--source include/ndb_master-slave.inc
|
--source include/master-slave.inc
|
||||||
|
--enable_query_log
|
||||||
--connection master
|
let $off_set = 6;
|
||||||
create table t1 (a int key, b int) engine innodb;
|
let $rpl_format = 'SBR';
|
||||||
create table t2 (a int key, b int) engine innodb;
|
--source extra/rpl_tests/rpl_ndb_apply_status.test
|
||||||
|
|
||||||
--sync_slave_with_master
|
|
||||||
--connection slave
|
|
||||||
alter table t1 engine ndb;
|
|
||||||
alter table t2 engine ndb;
|
|
||||||
|
|
||||||
# check binlog position without begin
|
|
||||||
--connection master
|
|
||||||
insert into t1 values (1,2);
|
|
||||||
|
|
||||||
--sync_slave_with_master
|
|
||||||
--connection slave
|
|
||||||
--replace_column 1 <start_pos> 2 <end_pos>
|
|
||||||
select @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status;
|
|
||||||
--let $start_pos = `select @start_pos`
|
|
||||||
--let $end_pos = `select @end_pos`
|
|
||||||
|
|
||||||
--connection master
|
|
||||||
# here is actually a bug, since there is no begin statement, the
|
|
||||||
# query is autocommitted, and end_pos shows end of the insert and not
|
|
||||||
# end of the commit
|
|
||||||
--replace_result $start_pos <start_pos>
|
|
||||||
--replace_column 5 #
|
|
||||||
--eval show binlog events from $start_pos limit 1
|
|
||||||
--replace_result $start_pos <start_pos> $end_pos <end_pos>
|
|
||||||
--replace_column 2 #
|
|
||||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
|
||||||
--eval show binlog events from $start_pos limit 1,1
|
|
||||||
|
|
||||||
# check binlog position with begin
|
|
||||||
--connection master
|
|
||||||
begin;
|
|
||||||
insert into t1 values (2,3);
|
|
||||||
insert into t2 values (3,4);
|
|
||||||
commit;
|
|
||||||
|
|
||||||
--sync_slave_with_master
|
|
||||||
--connection slave
|
|
||||||
--replace_column 1 <start_pos> 2 <end_pos>
|
|
||||||
select @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status;
|
|
||||||
--let $start_pos = `select @start_pos`
|
|
||||||
--let $end_pos = `select @end_pos`
|
|
||||||
|
|
||||||
--connection master
|
|
||||||
--replace_result $start_pos <start_pos>
|
|
||||||
--replace_column 5 #
|
|
||||||
--eval show binlog events from $start_pos limit 1
|
|
||||||
--replace_result $start_pos <start_pos>
|
|
||||||
--replace_column 2 # 4 # 5 #
|
|
||||||
--eval show binlog events from $start_pos limit 1,2
|
|
||||||
--replace_result $start_pos <start_pos> $end_pos <end_pos>
|
|
||||||
--replace_column 2 #
|
|
||||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
|
||||||
--eval show binlog events from $start_pos limit 3,1
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user