-- source include/have_ndb.inc -- source include/have_multi_ndb.inc --disable_warnings DROP TABLE IF EXISTS t1; drop database if exists mysqltest; --enable_warnings # # Basic test to show that the ALTER TABLE # is working # CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (9410,9412); ALTER TABLE t1 ADD COLUMN c int not null; SELECT * FROM t1; DROP TABLE t1; # # Verfify changing table names between databases # CREATE DATABASE mysqltest; USE mysqltest; CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL ) ENGINE=ndbcluster; RENAME TABLE t1 TO test.t1; SHOW TABLES; DROP DATABASE mysqltest; USE test; SHOW TABLES; DROP TABLE t1; # # More advanced test # create table t1 ( col1 int not null auto_increment primary key, col2 varchar(30) not null, col3 varchar (20) not null, col4 varchar(4) not null, col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null, col6 int not null, to_be_deleted int) ENGINE=ndbcluster; --replace_column 7 # 8 # 10 # 12 # 13 # 14 # 18 # show table status; SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO; insert into t1 values (0,4,3,5,"PENDING",1,7),(NULL,4,3,5,"PENDING",1,7),(31,4,3,5,"PENDING",1,7), (7,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (100,4,3,5,"PENDING",1,7), (99,4,3,5,"PENDING",1,7), (8,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7); --replace_column 7 # 8 # 10 # 12 # 13 # 14 # 18 # show table status; select * from t1 order by col1; alter table t1 add column col4_5 varchar(20) not null after col4, add column col7 varchar(30) not null after col5, add column col8 datetime not null, drop column to_be_deleted, change column col2 fourth varchar(30) not null after col3, modify column col6 int not null first; --replace_column 7 # 8 # 10 # 12 # 13 # 14 # 18 # show table status; select * from t1 order by col1; insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00'); --replace_column 7 # 8 # 10 # 12 # 13 # 14 # 18 # show table status; select * from t1 order by col1; delete from t1; insert into t1 values (0,0,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00'); SET SQL_MODE=''; insert into t1 values (1,0,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00'); select * from t1 order by col1; alter table t1 drop column col4_5; insert into t1 values (2,0,4,3,5,"PENDING","EXTRA",'2004-01-01 00:00:00'); select * from t1 order by col1; drop table t1; # # Check that invalidating dictionary cache works # CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (9410,9412); connect (con1,localhost,,,test); connect (con2,localhost,,,test); connection con1; ALTER TABLE t1 ADD COLUMN c int not null; select * from t1 order by a; connection con2; select * from t1 order by a; alter table t1 drop c; connection con1; select * from t1 order by a; drop table t1; connection con2; --error 1146 select * from t1 order by a; CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY, b INT NOT NULL ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (0,1),(17,18); select * from t1 order by a; SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO; alter table t1 modify column a int not null auto_increment; SET SQL_MODE=''; select * from t1 order by a; INSERT INTO t1 VALUES (0,19),(20,21); select * from t1 order by a; drop table t1; CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY, b INT NOT NULL ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (0,1),(17,18); select * from t1 order by a; alter table t1 add c int not null unique auto_increment; select c from t1 order by c; INSERT INTO t1 VALUES (1,2,0),(18,19,4),(20,21,0); select c from t1 order by c; drop table t1; create table t1 ( a int primary key, b varchar(10), c varchar(10), index (b) ) engine=ndb; insert into t1 values (1,'one','one'), (2,'two','two'), (3,'three','three'); create index c on t1(c); connection server2; select * from t1 where b = 'two'; connection server1; alter table t1 drop index c; connection server2; --error 1146 select * from t1 where b = 'two'; select * from t1 where b = 'two'; connection server1; drop table t1; #--disable_warnings #DROP TABLE IF EXISTS t2; #--enable_warnings #create table t2 (a int NOT NULL PRIMARY KEY) engine=myisam; #let $1=12001; #disable_query_log; #while ($1) #{ # eval insert into t2 values($1); # dec $1; #} #enable_query_log; #alter table t2 engine=ndbcluster; #alter table t2 add c int; #--error 1297 #delete from t2; #to make sure we do a full table scan #select count(*) from t2 where a+0 > 0; #truncate table t2; #select count(*) from t2; #drop table t2;