ndb_transaction.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
源码类别:
MySQL数据库
开发平台:
Visual C++
- -- source include/have_ndb.inc
- -- source include/not_embedded.inc
- --disable_warnings
- DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
- drop database if exists mysqltest;
- --enable_warnings
- #
- # Transactionc test to show that the NDB
- # table handler is working properly with
- # transactions
- #
- #
- # Create a normal table with primary key
- #
- CREATE TABLE t1 (
- pk1 INT NOT NULL PRIMARY KEY,
- attr1 INT NOT NULL
- ) ENGINE=ndbcluster;
- # insert
- begin;
- insert into t1 values(1,1);
- insert into t1 values(2,2);
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
- rollback;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
- begin;
- insert into t1 values(1,1);
- insert into t1 values(2,2);
- commit;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
- # update
- begin;
- update t1 set attr1 = attr1 * 2;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- rollback;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- begin;
- update t1 set attr1 = attr1 * 2;
- commit;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- # delete
- begin;
- delete from t1 where attr1 = 2;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- rollback;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- begin;
- delete from t1 where attr1 = 2;
- commit;
- select count(*) from t1;
- select * from t1 where pk1 = 1;
- select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
- DROP TABLE t1;
- #
- # Create table without primary key
- # a hidden primary key column is created by handler
- #
- CREATE TABLE t1 (id INT, id2 int) engine=ndbcluster;
- # insert
- begin;
- insert into t1 values(1,1);
- insert into t1 values(2,2);
- select sum(id) from t1;
- select * from t1 where id = 1;
- select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
- rollback;
- select sum(id) from t1;
- select * from t1 where id = 1;
- select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
- begin;
- insert into t1 values(1,1);
- insert into t1 values(2,2);
- commit;
- select sum(id) from t1;
- select * from t1 where id = 1;
- select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
- # update
- begin;
- update t1 set id = id * 2;
- select sum(id) from t1;
- select * from t1 where id = 2;
- select * from t1, t1 as t1x where t1x.id = t1.id - 2;
- rollback;
- select sum(id) from t1;
- select * from t1 where id = 2;
- select * from t1, t1 as t1x where t1x.id = t1.id - 2;
- begin;
- update t1 set id = id * 2;
- commit;
- select sum(id) from t1;
- select * from t1 where id = 2;
- select * from t1, t1 as t1x where t1x.id = t1.id - 2;
- # delete
- DROP TABLE t1;
- #
- # A more extensive test with a lot more records
- #
- CREATE TABLE t2 (
- a bigint unsigned NOT NULL PRIMARY KEY,
- b int unsigned not null,
- c int unsigned
- ) engine=ndbcluster;
- CREATE TABLE t3 (
- a bigint unsigned NOT NULL,
- b bigint unsigned not null,
- c bigint unsigned,
- PRIMARY KEY(a)
- ) engine=ndbcluster;
- CREATE TABLE t4 (
- a bigint unsigned NOT NULL,
- b bigint unsigned not null,
- c bigint unsigned NOT NULL,
- d int unsigned,
- PRIMARY KEY(a, b, c)
- ) engine=ndbcluster;
- #
- # insert records into tables and rollback
- #
- let $1=100;
- disable_query_log;
- begin;
- while ($1)
- {
- eval insert into t2 values($1, $1+9, 5);
- eval insert into t3 values($1, $1+9, 5);
- eval insert into t4 values($1, $1+9, 5, $1+26000);
- dec $1;
- }
- rollback;
- enable_query_log;
- select count(*) from t2;
- select count(*) from t3;
- select count(*) from t4;
- #
- # insert records into tables and commit;
- #
- let $1=100;
- disable_query_log;
- begin;
- while ($1)
- {
- eval insert into t2 values($1, $1+9, 5);
- eval insert into t3 values($1, $1+9, 5);
- eval insert into t4 values($1, $1+9, 5, $1+26000);
- dec $1;
- }
- commit;
- enable_query_log;
- select count(*) from t2;
- select count(*) from t3;
- select count(*) from t4;
- #
- # delete every other record in the tables
- #
- let $1=100;
- disable_query_log;
- while ($1)
- {
- eval delete from t2 where a=$1;
- eval delete from t3 where a=$1;
- eval delete from t4 where a=$1 and b=$1+9 and c=5;
- dec $1;
- dec $1;
- }
- enable_query_log;
- #
- # update records and rollback
- #
- begin;
- let $1=100;
- disable_query_log;
- while ($1)
- {
- eval update t2 set c=$1 where a=$1;
- eval update t3 set c=7 where a=$1 and b=$1+9 and c=5;
- eval update t4 set d=$1+21987 where a=$1 and b=$1+9 and c=5;
- dec $1;
- dec $1;
- }
- rollback;
- enable_query_log;
- #
- # update records and commit
- #
- begin;
- let $1=100;
- disable_query_log;
- while ($1)
- {
- eval update t2 set c=$1 where a=$1;
- eval update t3 set c=7 where a=$1 and b=$1+9 and c=5;
- eval update t4 set d=$1+21987 where a=$1 and b=$1+9 and c=5;
- dec $1;
- dec $1;
- }
- rollback;
- enable_query_log;
- drop table t2;
- drop table t3;
- drop table t4;
- #
- # Test multiple databases in one transaction
- #
- CREATE TABLE t1 (
- pk1 INT NOT NULL PRIMARY KEY,
- attr1 INT NOT NULL
- ) ENGINE=ndbcluster;
- create database mysqltest;
- use mysqltest;
- CREATE TABLE t2 (
- a bigint unsigned NOT NULL PRIMARY KEY,
- b int unsigned not null,
- c int unsigned
- ) engine=ndbcluster;
- begin;
- insert into test.t1 values(1,1);
- insert into t2 values(1,1,1);
- insert into test.t1 values(2,2);
- insert into t2 values(2,2,2);
- select count(*) from test.t1;
- select count(*) from t2;
- select * from test.t1 where pk1 = 1;
- select * from t2 where a = 1;
- select test.t1.attr1
- from test.t1, test.t1 as t1x where test.t1.pk1 = t1x.pk1 + 1;
- select t2.a
- from t2, t2 as t2x where t2.a = t2x.a + 1;
- select test.t1.pk1, a from test.t1,t2 where b > test.t1.attr1;
- rollback;
- select count(*) from test.t1;
- select count(*) from t2;
- drop table test.t1, t2;
- drop database mysqltest;
- # End of 4.1 tests