755 lines
25 KiB
Plaintext
755 lines
25 KiB
Plaintext
#############################################################
|
|
# Author: Martin
|
|
# Date: 2007-07
|
|
# Purpose: basic online alter test
|
|
##############################################################
|
|
# Change Author: Jonathan
|
|
# Date 2006-08-28
|
|
# Purpose: Add more testing for online alter
|
|
##############################################################
|
|
--source include/have_multi_ndb.inc
|
|
--source suite/ndb/include/backup_restore_setup.inc
|
|
|
|
# Create utiltity table used to hold the output from ndb_show_table
|
|
CREATE TEMPORARY TABLE IF NOT EXISTS ndb_show_tables_results (
|
|
id INT,
|
|
type VARCHAR(20),
|
|
state VARCHAR(20),
|
|
logging VARCHAR(20),
|
|
_database VARCHAR(255),
|
|
_schema VARCHAR(20),
|
|
name VARCHAR(255)
|
|
);
|
|
|
|
######################################
|
|
# basic online alter tests
|
|
######################################
|
|
--echo *******************************
|
|
--echo * basic online alter tests
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=DYNAMIC ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--echo *******************************
|
|
--echo * Alter Table online add column
|
|
--echo *******************************
|
|
--echo * Add column c as CHAR
|
|
--echo *******************************
|
|
|
|
ALTER TABLE t1 ADD c CHAR(19);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
INSERT INTO t1 values (2,1,"a");
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c='b' where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Alter Table online add column
|
|
--echo *******************************
|
|
--echo * Add column c as nullable INT
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b VARCHAR(19)) ENGINE NDB;
|
|
INSERT INTO t1 values (1,"a");
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
ALTER TABLE t1 ADD c INT;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
INSERT INTO t1 values (2,"a",1);
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 2 where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Alter Table online add column
|
|
--echo *******************************
|
|
--echo * Add column c as nullable INT
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT COLUMN_FORMAT DYNAMIC) ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
ALTER TABLE t1 ADD c INT;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
INSERT INTO t1 values (2,1,1);
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 2 where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
|
|
--echo *******************************
|
|
--echo * Create online Index ci
|
|
--echo *******************************
|
|
|
|
CREATE INDEX ci on t1(c) algorithm=inplace;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
--echo *******************************
|
|
--echo * Create offline Index ci2
|
|
--echo *******************************
|
|
|
|
CREATE INDEX ci2 on t1(c) algorithm=copy;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--echo *******************************
|
|
--echo * Drop online Index ci
|
|
--echo *******************************
|
|
|
|
DROP INDEX ci on t1 algorithm=inplace;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
--echo *******************************
|
|
--echo * Drop offline Index ci2
|
|
--echo *******************************
|
|
|
|
DROP INDEX ci2 on t1 algorithm=copy;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Add column c as NULLABLE TIMESTAMP online
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=DYNAMIC ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
ALTER TABLE t1 algorithm=inplace, ADD c TIMESTAMP;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
INSERT INTO t1 values (2,2,'2007-09-19 18:46:02');
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = '2007-10-22 16:35:06' where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * The following ALTER operations are not supported on-line
|
|
--echo *******************************
|
|
--echo * Not supported Test#1
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=FIXED ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c CHAR(19);
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
ALTER TABLE t1 ADD c CHAR(19);
|
|
|
|
INSERT INTO t1 values (2,1,"a");
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 'b' where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Not supported Test#2
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=DYNAMIC ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c CHAR(19) DEFAULT 17;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
ALTER TABLE t1 ADD c CHAR(19) DEFAULT 17;
|
|
|
|
INSERT INTO t1 values (2,1,"a");
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 'b' where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
--echo *******************************
|
|
--echo * Not supported Test#3
|
|
--echo *******************************
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD d INT AFTER b;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
ALTER TABLE t1 ADD d INT AFTER b;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
INSERT INTO t1 VALUES(3,1,1,'b');
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET d = 2 where a = 3;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
|
|
--echo *******************************
|
|
--echo * Not supported Test#4
|
|
--echo *******************************
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
|
ALTER TABLE t1 algorithm=inplace, ENGINE MYISAM;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Not supported Test#5
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=DYNAMIC ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c CHAR(19) NOT NULL;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
ALTER TABLE t1 ADD c CHAR(19) NOT NULL;
|
|
|
|
INSERT INTO t1 values (2,1,"a");
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 'b' where a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Not supported Test#6
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED KEY, b INT UNSIGNED) ROW_FORMAT=DYNAMIC ENGINE NDB;
|
|
INSERT INTO t1 values (1,1);
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c CHAR(19) COLUMN_FORMAT FIXED;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
ALTER TABLE t1 ADD c CHAR(19) COLUMN_FORMAT FIXED;
|
|
|
|
INSERT INTO t1 values (2,1,"a");
|
|
SELECT * FROM t1 ORDER BY a;
|
|
UPDATE t1 SET c = 'b' WHERE a = 2;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
DROP TABLE t1;
|
|
|
|
--echo *******************************
|
|
--echo * Not supported Test#7
|
|
--echo * Ndb doesn't support renaming attributes on-line
|
|
--echo *******************************
|
|
|
|
CREATE TABLE t1 (
|
|
auto int(5) unsigned NOT NULL auto_increment,
|
|
string char(10),
|
|
vstring varchar(10),
|
|
bin binary(2),
|
|
vbin varbinary(7),
|
|
tiny tinyint(4) DEFAULT '0' NOT NULL ,
|
|
short smallint(6) DEFAULT '1' NOT NULL ,
|
|
medium mediumint(8) DEFAULT '0' NOT NULL,
|
|
long_int int(11) DEFAULT '0' NOT NULL,
|
|
longlong bigint(13) DEFAULT '0' NOT NULL,
|
|
real_float float(13,1) DEFAULT 0.0 NOT NULL,
|
|
real_double double(16,4),
|
|
real_decimal decimal(16,4),
|
|
utiny tinyint(3) unsigned DEFAULT '0' NOT NULL,
|
|
ushort smallint(5) unsigned zerofill DEFAULT '00000' NOT NULL,
|
|
umedium mediumint(8) unsigned DEFAULT '0' NOT NULL,
|
|
ulong int(11) unsigned DEFAULT '0' NOT NULL,
|
|
ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL,
|
|
bits bit(3),
|
|
options enum('zero','one','two','three','four') not null,
|
|
flags set('zero','one','two','three','four') not null,
|
|
date_field date,
|
|
year_field year,
|
|
time_field time,
|
|
date_time datetime,
|
|
time_stamp timestamp,
|
|
PRIMARY KEY (auto)
|
|
) engine=ndb;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t1 algorithm=inplace, change tiny new_tiny tinyint(4) DEFAULT '0';
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
alter table t1 change tiny tiny2 tinyint(4) DEFAULT '0' NOT NULL;
|
|
alter table t1 algorithm=inplace, change tiny2 new_tiny tinyint(4) DEFAULT '0' NOT NULL;
|
|
# Changing default value is not supported online
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t1 algorithm=inplace, change new_tiny new_tiny tinyint(4) DEFAULT '1' NOT NULL;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
alter table t1 change new_tiny new_tiny tinyint(4) DEFAULT '1' NOT NULL;
|
|
|
|
create index i1 on t1(medium);
|
|
alter table t1 add index i2(new_tiny);
|
|
drop index i1 on t1;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
DROP TABLE t1;
|
|
|
|
#####################################
|
|
# Adding dropping primary key
|
|
######################################
|
|
# Bug:31233
|
|
######################################
|
|
--echo ****************************************
|
|
--echo * Adding dropping primary key
|
|
--echo ****************************************
|
|
CREATE TABLE t1 (a INT UNSIGNED NOT NULL) ENGINE NDB;
|
|
--source show_primary_keys.inc
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD PRIMARY KEY (a);
|
|
ALTER TABLE t1 algorithm=copy, ADD PRIMARY KEY (a);
|
|
--source show_primary_keys.inc
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, DROP PRIMARY KEY;
|
|
ALTER TABLE t1 algorithm=copy, DROP PRIMARY KEY;
|
|
--source show_primary_keys.inc
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
CREATE UNIQUE INDEX pk ON t1(a) algorithm=inplace;
|
|
CREATE UNIQUE INDEX pk ON t1(a) algorithm=copy;
|
|
--source show_primary_keys.inc
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, DROP INDEX PK;
|
|
ALTER TABLE t1 algorithm=copy, DROP INDEX PK;
|
|
--source show_primary_keys.inc
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED) ENGINE NDB;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD b INT UNIQUE;
|
|
ALTER TABLE t1 algorithm=copy, ADD b INT UNIQUE;
|
|
--source show_primary_keys.inc
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c INT NOT NULL UNIQUE;
|
|
ALTER TABLE t1 algorithm=copy, ADD c INT NOT NULL UNIQUE;
|
|
--source show_primary_keys.inc
|
|
DROP TABLE t1;
|
|
|
|
######################################
|
|
# Alter dynmaic table, add TEXT column
|
|
######################################
|
|
# Bug:30205
|
|
######################################
|
|
--echo ****************************************
|
|
--echo * Add column c as nullable TEXT and BLOB
|
|
--echo ****************************************
|
|
CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT KEY, b INT DEFAULT 2 COLUMN_FORMAT DYNAMIC) ENGINE NDB;
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
INSERT INTO t1 VALUES(NULL, DEFAULT);
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD c TEXT;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD d BLOB;
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
DROP TABLE t1;
|
|
|
|
######################################
|
|
# Alter dynmaic table, add column
|
|
######################################
|
|
|
|
CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT KEY, b INT COLUMN_FORMAT DYNAMIC) ENGINE NDB;
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v);
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
--source ndb_show_tables_result.inc
|
|
set @t1_id = (select id from ndb_show_tables_results where name like '%t1%' and type like '%UserTable%');
|
|
|
|
--echo *******************************
|
|
--echo * Add column c as nullable FLOAT
|
|
--echo *******************************
|
|
ALTER TABLE t1 algorithm=inplace, ADD c FLOAT;
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v, -3.402823466E+38);
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
--echo *******************************
|
|
--echo * Add column d as nullable DOUBLE
|
|
--echo *******************************
|
|
ALTER TABLE t1 algorithm=inplace, ADD d DOUBLE UNSIGNED;
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v, -3.402823466E+38, 1.7976931348623E+308);
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
--echo *******************************
|
|
--echo * Add column e as nullable DECIMAL
|
|
--echo *******************************
|
|
ALTER TABLE t1 algorithm=inplace, ADD e DECIMAL(5,2);
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v, -3.402823466E+38, 1.7976931348623E+308, 345.21);
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
--echo *******************************
|
|
--echo * Add column f as nullable DATETIME
|
|
--echo *******************************
|
|
ALTER TABLE t1 algorithm=inplace, ADD f DATETIME;
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v, -3.402823466E+38, 1.7976931348623E+308, 345.21, '1000-01-01 00:00:00');
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
--echo *******************************
|
|
--echo * Add column g as nullable BINARY
|
|
--echo *******************************
|
|
ALTER TABLE t1 ADD g BINARY(4);
|
|
|
|
let $v=5;
|
|
disable_query_log;
|
|
while ($v)
|
|
{
|
|
--eval INSERT INTO t1 VALUES(NULL, $v, -3.402823466E+38, 1.7976931348623E+308, 345.21, '1000-01-01 00:00:00', '0101');
|
|
dec $v;
|
|
}
|
|
enable_query_log;
|
|
|
|
|
|
--source ndb_show_tables_result.inc
|
|
select name from ndb_show_tables_results where id = @t1_id and name like '%t1%' and type like '%UserTable%';
|
|
|
|
SELECT COUNT(*) FROM t1 WHERE c IS NULL;
|
|
SELECT COUNT(*) FROM t1 WHERE d IS NULL;
|
|
SELECT COUNT(*) FROM t1 WHERE e IS NULL;
|
|
SELECT COUNT(*) FROM t1 WHERE f IS NULL;
|
|
SELECT COUNT(*) FROM t1 WHERE g IS NULL;
|
|
|
|
UPDATE t1 SET c = 3.402823466E+38, d = 1.2686868689898E+308, e = 666.66, f = '2007-10-23 23:23:23', g = '1111' WHERE a = 1;
|
|
SELECT * FROM t1 WHERE a = 1 or a = 10 or a = 20 or a = 30 ORDER BY a;
|
|
|
|
##############################
|
|
# Backup and restore section #
|
|
##############################
|
|
--echo *********************************
|
|
--echo * Backup and restore tables w/ new column
|
|
--echo *********************************
|
|
|
|
--source include/ndb_backup.inc
|
|
|
|
DROP TABLE t1;
|
|
|
|
--exec $NDB_RESTORE -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
--exec $NDB_RESTORE -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
|
|
source show_varpart.inc;
|
|
|
|
DROP TABLE t1;
|
|
|
|
###################################
|
|
# Disk Data Error testing section #
|
|
###################################
|
|
--echo *********************************
|
|
--echo * Disk Data error testing
|
|
--echo *********************************
|
|
|
|
set default_storage_engine=ndb;
|
|
|
|
CREATE LOGFILE GROUP lg1
|
|
ADD UNDOFILE 'undofile.dat'
|
|
INITIAL_SIZE 16M
|
|
UNDO_BUFFER_SIZE = 1M;
|
|
|
|
CREATE TABLESPACE ts1
|
|
ADD DATAFILE 'datafile.dat'
|
|
USE LOGFILE GROUP lg1
|
|
INITIAL_SIZE 12M
|
|
ENGINE NDB;
|
|
--echo DISK stored column b will become fixed
|
|
CREATE TABLE t1
|
|
(pk1 INT NOT NULL PRIMARY KEY, b INT COLUMN_FORMAT DYNAMIC)
|
|
TABLESPACE ts1 STORAGE DISK
|
|
ENGINE=NDB;
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b b INT COLUMN_FORMAT FIXED STORAGE MEMORY;
|
|
# Column rename
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b b_1 INT COLUMN_FORMAT DYNAMIC;
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b_1 b_2 INT COLUMN_FORMAT DYNAMIC STORAGE DISK;
|
|
ALTER TABLE t1 algorithm=inplace, RENAME COLUMN b_2 TO b;
|
|
--error ER_DUP_FIELDNAME
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b pk1 INT COLUMN_FORMAT DYNAMIC;
|
|
# Testing no change
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b b INT COLUMN_FORMAT DYNAMIC STORAGE DISK;
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b b INT COLUMN_FORMAT DYNAMIC;
|
|
ALTER TABLE t1 algorithm=inplace, CHANGE b b INT;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN c INT COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN d FLOAT COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN e DOUBLE COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN f DATETIME COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN g DECIMAL(5,2) COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN h CHAR(20) COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN h VARCHAR(20) COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN h BINARY(20) COLUMN_FORMAT DYNAMIC;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
ALTER TABLE t1 algorithm=inplace, ADD COLUMN h VARBINARY(20) COLUMN_FORMAT DYNAMIC;
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# bug#42549
|
|
#
|
|
create table t1 (a int primary key, b int) storage disk tablespace ts1 engine = ndb;
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t1 algorithm=inplace, add column c0 int null column_format DYNAMIC;
|
|
alter table t1 algorithm=inplace, add column c1 int null column_format DYNAMIC storage memory;
|
|
drop table t1;
|
|
|
|
create table t1 (a int primary key, b int storage disk) tablespace ts1 engine = ndb;
|
|
alter table t1 algorithm=inplace, add column c0 int null column_format DYNAMIC;
|
|
alter table t1 algorithm=inplace, add column c1 int null column_format DYNAMIC storage memory;
|
|
drop table t1;
|
|
|
|
ALTER TABLESPACE ts1
|
|
DROP DATAFILE 'datafile.dat';
|
|
|
|
DROP TABLESPACE ts1;
|
|
|
|
DROP LOGFILE GROUP lg1
|
|
ENGINE =NDB;
|
|
|
|
##############################
|
|
# ROW_FORMAT testing section #
|
|
##############################
|
|
--echo ********************
|
|
--echo * ROW_FORMAT testing
|
|
--echo ********************
|
|
|
|
# Bug:30276, should issue a warning
|
|
|
|
CREATE TABLE t1
|
|
(pk1 INT NOT NULL PRIMARY KEY, b INT COLUMN_FORMAT DYNAMIC)ROW_FORMAT=FIXED
|
|
ENGINE=NDB;
|
|
|
|
source show_attributes.inc;
|
|
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1
|
|
(pk1 INT NOT NULL COLUMN_FORMAT FIXED PRIMARY KEY,
|
|
b INT COLUMN_FORMAT FIXED)ROW_FORMAT=DYNAMIC ENGINE=NDB;
|
|
|
|
source show_attributes.inc;
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo ********************
|
|
--echo * bug#44695 ALTER TABLE during START BACKUP crashes mysqld
|
|
--echo ********************
|
|
# Testing failure of online alter during ongoing backup
|
|
|
|
CREATE TABLE t1(k INT NOT NULL PRIMARY KEY AUTO_INCREMENT) ROW_FORMAT=DYNAMIC ENGINE=NDB;
|
|
# create some data to slow down backup
|
|
INSERT INTO t1 VALUES (NULL);
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
INSERT INTO t1 SELECT NULL FROM t1;
|
|
SELECT COUNT(*) FROM t1;
|
|
--exec $NDB_MGM --no-defaults --ndb-connectstring="$NDB_CONNECTSTRING" -e "start backup nowait" >> $NDB_TOOLS_OUTPUT
|
|
--disable_warnings
|
|
--error 0,762,1296
|
|
ALTER TABLE t1 algorithm=inplace, ADD b INT;
|
|
# waut for backup to complete
|
|
--sleep 10
|
|
|
|
--enable_warnings
|
|
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# test alter of table with many attributes
|
|
#
|
|
let $i=499;
|
|
let $separator=;
|
|
let $sql=create table t1 (;
|
|
while ($i)
|
|
{
|
|
let $sql=$sql$separator c$i int;
|
|
let $separator=,;
|
|
dec $i;
|
|
}
|
|
let $sql=$sql, c501 varchar(10000) character set latin1;
|
|
let $sql=$sql, primary key using hash(c1)) engine=ndb;
|
|
eval $sql; # eval the sql and create the table
|
|
|
|
insert into t1 (c1) values (1), (2), (3);
|
|
alter table t1 algorithm=copy, modify c1 int auto_increment;
|
|
alter table t1 algorithm=inplace, add column c500 bit(1) column_format DYNAMIC;
|
|
# Exceeding max record size of NDB
|
|
--error ER_CANT_CREATE_TABLE
|
|
alter table t1 algorithm=copy, add column c502 varchar(18001) character set latin1;
|
|
show warnings;
|
|
# Exceeding max record size of NDB
|
|
--error ER_GET_ERRMSG
|
|
alter table t1 algorithm=inplace, add column c502 varchar(18001) character set latin1;
|
|
show warnings;
|
|
delete from t1;
|
|
drop table t1;
|
|
|
|
|
|
#
|
|
# Bug #13830980 MYSQL COMPLAINS OF NOT SUPPORTING ALTER ONLINE EVEN WHEN VALID OPTIONS ARE USED
|
|
#
|
|
|
|
create table t1(a int(10) unsigned not null auto_increment,
|
|
b varchar(20) default 'x',
|
|
c varchar(20) default null,
|
|
primary key (a) ) engine=ndbcluster;
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t1 algorithm=inplace, add e varchar(20) default 'x' column_format dynamic;
|
|
alter table t1 algorithm=inplace, add e varchar(20) default null column_format dynamic;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug #12755722 61528: INNODB BACKEND CRASHES ON ALTER TABLE STATEMENT (MYSQL SERVER HAS GONE AWAY
|
|
#
|
|
|
|
CREATE TABLE categorylinks (
|
|
cl_from int(10) unsigned NOT NULL DEFAULT '0',
|
|
cl_to varbinary(255) NOT NULL DEFAULT '',
|
|
cl_sortkey varbinary(70) NOT NULL DEFAULT '',
|
|
cl_timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
|
|
CURRENT_TIMESTAMP,
|
|
UNIQUE KEY cl_from (cl_from,cl_to),
|
|
KEY cl_sortkey (cl_to,cl_sortkey,cl_from),
|
|
KEY cl_timestamp (cl_to,cl_timestamp)
|
|
) ENGINE=ndb DEFAULT CHARSET=binary;
|
|
|
|
ALTER TABLE categorylinks
|
|
CHANGE COLUMN cl_sortkey cl_sortkey varbinary(230) NOT NULL default
|
|
'',
|
|
ADD COLUMN cl_sortkey_prefix varchar(255) binary NOT NULL default '',
|
|
ADD COLUMN cl_collation varbinary(32) NOT NULL default '',
|
|
ADD COLUMN cl_type ENUM('page', 'subcat', 'file') NOT NULL default
|
|
'page',
|
|
ADD INDEX (cl_collation),
|
|
DROP INDEX cl_sortkey,
|
|
ADD INDEX cl_sortkey (cl_to, cl_type, cl_sortkey, cl_from);
|
|
|
|
--disable_warnings
|
|
SHOW CREATE TABLE categorylinks;
|
|
--enable_warnings
|
|
|
|
DROP TABLE categorylinks;
|
|
|
|
--source suite/ndb/include/backup_restore_cleanup.inc
|
|
--remove_file $NDB_TOOLS_OUTPUT
|