458 lines
15 KiB
Plaintext
458 lines
15 KiB
Plaintext
--source include/have_ndb.inc
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1,t2;
|
|
--enable_warnings
|
|
|
|
CREATE LOGFILE GROUP lg1
|
|
ADD UNDOFILE 'undofile.dat'
|
|
INITIAL_SIZE 16M
|
|
UNDO_BUFFER_SIZE = 1M ENGINE=NDB;
|
|
|
|
CREATE TABLESPACE ts1
|
|
ADD DATAFILE 'datafile.dat'
|
|
USE LOGFILE GROUP lg1
|
|
INITIAL_SIZE 64M
|
|
ENGINE NDB;
|
|
|
|
CREATE TABLE t1 (a int unsigned not null,
|
|
b int unsigned not null,
|
|
c int unsigned not null,
|
|
primary key(a,c),
|
|
unique (b))
|
|
ENGINE = NDB
|
|
COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM"
|
|
partition by key(a);
|
|
|
|
let $ndb_desc_opts= -b -i -d test t1;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
CREATE TABLE t2 (a int unsigned not null,
|
|
b int unsigned not null,
|
|
c int unsigned not null,
|
|
primary key(a,b),
|
|
unique (b))
|
|
ENGINE = NDB
|
|
COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM"
|
|
STORAGE DISK
|
|
TABLESPACE ts1
|
|
partition by key(a);
|
|
|
|
let $ndb_desc_opts= -b -i -d test t2;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
CREATE TABLE t3 (a int unsigned not null,
|
|
b int unsigned not null,
|
|
c int unsigned not null,
|
|
primary key(a,b),
|
|
unique (b))
|
|
MAX_ROWS=50000000
|
|
ENGINE = NDB;
|
|
|
|
let $ndb_desc_opts= -b -i -d test t3;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
CREATE TABLE t4 (a int unsigned not null,
|
|
b int unsigned not null,
|
|
c int unsigned not null,
|
|
primary key(a,b),
|
|
unique (b))
|
|
ENGINE = NDB
|
|
COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
|
|
|
|
CREATE TABLE t5 (a int unsigned not null,
|
|
b int unsigned not null,
|
|
c int unsigned null,
|
|
primary key(a,b),
|
|
unique (b),
|
|
unique (c))
|
|
ENGINE = NDB
|
|
partition by key(a) partitions 3;
|
|
|
|
# Fragment counts for unique index must be equal to main table
|
|
# if main table is hashmap partitioned
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t1;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t2;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t3;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t4;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t5;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
#
|
|
|
|
let $t1_part_count_start = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't1', Value, 1);
|
|
|
|
let $t2_part_count_start = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't2', Value, 1);
|
|
|
|
let $t3_part_count_start = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't3', Value, 1);
|
|
|
|
let $t4_part_count_start = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't4', Value, 1);
|
|
|
|
INSERT INTO t1 VALUES
|
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),
|
|
(11,11,11),(12,12,12),(13,13,13),(14,14,14),(15,15,15),
|
|
(16,16,16),(17,17,17),(18,18,18),(19,19,19),(20,20,20),
|
|
(21,21,21),(22,22,22),(23,23,23),(24,24,24),(25,25,25),
|
|
(26,26,26),(27,27,27),(28,28,28),(29,29,29),(30,30,30),
|
|
(31,31,31),(32,32,32),(33,33,33),(34,34,34),(35,35,35),
|
|
(36,36,36),(37,37,37),(38,38,38),(39,39,39),(40,40,40),
|
|
(41,41,41),(42,42,42),(43,43,43),(44,44,44),(45,45,45),
|
|
(46,46,46),(47,47,47),(48,48,48),(49,49,49),(50,50,50),
|
|
(51,51,51),(52,52,52),(53,53,53),(54,54,54),(55,55,55),
|
|
(56,56,56),(57,57,57),(58,58,58),(59,59,59),(60,60,60),
|
|
(61,61,61),(62,62,62),(63,63,63),(64,64,64),(65,65,65),
|
|
(66,66,66),(67,67,67),(68,68,68),(69,69,69),(70,70,70),
|
|
(71,71,71),(72,72,72),(73,73,73),(74,74,74),(75,75,75),
|
|
(76,76,76),(77,77,77),(78,78,78),(79,79,79),(80,80,80),
|
|
(81,81,81),(82,82,82),(83,83,83),(84,84,84),(85,85,85),
|
|
(86,86,86),(87,87,87),(88,88,88),(89,89,89),(90,90,90),
|
|
(91,91,91),(92,92,92),(93,93,93),(94,94,94),(95,95,95),
|
|
(96,96,96),(97,97,97),(98,98,98),(99,99,99),(100,100,100);
|
|
|
|
insert into t2 select * from t1;
|
|
insert into t3 select * from t1;
|
|
insert into t4 select * from t1;
|
|
insert into t5 (a,b,c) select a,b,if(a%2,b,NULL) as c from t1;
|
|
|
|
select count(*) from t1;
|
|
select count(*) from t2;
|
|
select count(*) from t3;
|
|
select count(*) from t4;
|
|
select count(*) from t5;
|
|
--sorted_result
|
|
select * from t1 where a < 20;
|
|
--sorted_result
|
|
select * from t1 where a = 20;
|
|
--sorted_result
|
|
select * from t1 where a = 30;
|
|
--sorted_result
|
|
select * from t1 where a = 40;
|
|
--sorted_result
|
|
select * from t1 where a = 50;
|
|
select * from t1 where b = 20;
|
|
select * from t1 where b = 30;
|
|
select * from t1 where b = 40;
|
|
select * from t1 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t2 where a < 20;
|
|
--sorted_result
|
|
select * from t2 where a = 20;
|
|
--sorted_result
|
|
select * from t2 where a = 30;
|
|
--sorted_result
|
|
select * from t2 where a = 40;
|
|
--sorted_result
|
|
select * from t2 where a = 50;
|
|
select * from t2 where b = 20;
|
|
select * from t2 where b = 30;
|
|
select * from t2 where b = 40;
|
|
select * from t2 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t3 where a < 20;
|
|
--sorted_result
|
|
select * from t3 where a = 20;
|
|
--sorted_result
|
|
select * from t3 where a = 30;
|
|
--sorted_result
|
|
select * from t3 where a = 40;
|
|
--sorted_result
|
|
select * from t3 where a = 50;
|
|
select * from t3 where b = 20;
|
|
select * from t3 where b = 30;
|
|
select * from t3 where b = 40;
|
|
select * from t3 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t4 where a < 20;
|
|
--sorted_result
|
|
select * from t4 where a = 20;
|
|
--sorted_result
|
|
select * from t4 where a = 30;
|
|
--sorted_result
|
|
select * from t4 where a = 40;
|
|
--sorted_result
|
|
select * from t4 where a = 50;
|
|
select * from t4 where b = 20;
|
|
select * from t4 where b = 30;
|
|
select * from t4 where b = 40;
|
|
select * from t4 where b = 50;
|
|
|
|
alter table t1 algorithm=inplace, reorganize partition;
|
|
|
|
let $ndb_desc_opts= -b -i -d test t1;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t2 algorithm=inplace, reorganize partition;
|
|
let $ndb_desc_opts= -b -i -d test t2;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
--echo Cannot use inplace reorganize partition on t3 as it has explicit MAX_ROWS set
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t3 algorithm=inplace, reorganize partition;
|
|
show warnings;
|
|
|
|
alter table t3 algorithm=inplace, max_rows=50000000;
|
|
let $ndb_desc_opts= -b -i -d test t3;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t4 algorithm=inplace, reorganize partition;
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t5 algorithm=inplace partition by key() partitions 6;
|
|
|
|
let $t1_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't1', Value, 1);
|
|
|
|
let $t2_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't2', Value, 1);
|
|
|
|
let $t3_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't3', Value, 1);
|
|
|
|
let $t4_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't4', Value, 1);
|
|
|
|
--disable_query_log
|
|
--echo Check partitions added, expect 0 in all cases
|
|
--echo partitions added to t1
|
|
eval select $t1_part_count_now - $t1_part_count_start as t1_added;
|
|
--echo partitions added to t2
|
|
eval select $t2_part_count_now - $t2_part_count_start as t2_added;
|
|
--echo partitions added to t3
|
|
eval select $t3_part_count_now - $t3_part_count_start as t3_added;
|
|
--echo partitions added to t4
|
|
eval select $t4_part_count_now - $t4_part_count_start as t4_added;
|
|
--enable_query_log
|
|
|
|
alter table t1 algorithm=inplace, add partition partitions 1;
|
|
|
|
let $ndb_desc_opts= -b -i -d test t1;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t2 algorithm=inplace, add partition partitions 4;
|
|
let $ndb_desc_opts= -b -i -d test t2;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t3 algorithm=inplace, max_rows=100000000; # Expansion of max rows
|
|
let $ndb_desc_opts= -b -i -d test t3;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t4 algorithm=inplace, max_rows=100000000; # Attempted introduction of max rows - fails
|
|
|
|
let $t1_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't1', Value, 1);
|
|
|
|
let $t2_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't2', Value, 1);
|
|
|
|
let $t3_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't3', Value, 1);
|
|
|
|
let $t4_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't4', Value, 1);
|
|
|
|
--disable_query_log
|
|
--echo partitions added to t1 (expect 1)
|
|
eval select $t1_part_count_now - $t1_part_count_start as t1_added;
|
|
--echo partitions added to t2 (expect 4)
|
|
eval select $t2_part_count_now - $t2_part_count_start as t2_added;
|
|
--echo partitions added to t3 (expect 4)
|
|
eval select $t3_part_count_now - $t3_part_count_start as t3_added;
|
|
--echo partitions added to t4 (expect 0)
|
|
eval select $t4_part_count_now - $t4_part_count_start as t4_added;
|
|
--enable_query_log
|
|
|
|
# reorganize partition not support if not default partitioning
|
|
# and after a add partition it's no longer default
|
|
--error ER_REORG_NO_PARAM_ERROR
|
|
alter table t1 algorithm=inplace, reorganize partition;
|
|
|
|
# Following will fail as t3 has an explicit MAX_ROWS set
|
|
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
|
alter table t3 algorithm=inplace, reorganize partition;
|
|
show warnings;
|
|
|
|
# t4 reorg will succeed as t4 has no explicit MAX_ROWS
|
|
alter table t4 algorithm=inplace, reorganize partition;
|
|
|
|
select count(*) from t1;
|
|
select count(*) from t2;
|
|
--sorted_result
|
|
select * from t1 where a < 20;
|
|
--sorted_result
|
|
select * from t1 where a = 20;
|
|
--sorted_result
|
|
select * from t1 where a = 30;
|
|
--sorted_result
|
|
select * from t1 where a = 40;
|
|
--sorted_result
|
|
select * from t1 where a = 50;
|
|
select * from t1 where b = 20;
|
|
select * from t1 where b = 30;
|
|
select * from t1 where b = 40;
|
|
select * from t1 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t2 where a < 20;
|
|
--sorted_result
|
|
select * from t2 where a = 20;
|
|
--sorted_result
|
|
select * from t2 where a = 30;
|
|
--sorted_result
|
|
select * from t2 where a = 40;
|
|
--sorted_result
|
|
select * from t2 where a = 50;
|
|
select * from t2 where b = 20;
|
|
select * from t2 where b = 30;
|
|
select * from t2 where b = 40;
|
|
select * from t2 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t3 where a < 20;
|
|
--sorted_result
|
|
select * from t3 where a = 20;
|
|
--sorted_result
|
|
select * from t3 where a = 30;
|
|
--sorted_result
|
|
select * from t3 where a = 40;
|
|
--sorted_result
|
|
select * from t3 where a = 50;
|
|
select * from t3 where b = 20;
|
|
select * from t3 where b = 30;
|
|
select * from t3 where b = 40;
|
|
select * from t3 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t4 where a < 20;
|
|
--sorted_result
|
|
select * from t4 where a = 20;
|
|
--sorted_result
|
|
select * from t4 where a = 30;
|
|
--sorted_result
|
|
select * from t4 where a = 40;
|
|
--sorted_result
|
|
select * from t4 where a = 50;
|
|
select * from t4 where b = 20;
|
|
select * from t4 where b = 30;
|
|
select * from t4 where b = 40;
|
|
select * from t4 where b = 50;
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t4;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
drop table t4;
|
|
|
|
alter table t1 algorithm=inplace, add partition partitions 2;
|
|
let $ndb_desc_opts= -b -i -d test t1;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t2 algorithm=inplace, add partition partitions 1;
|
|
let $ndb_desc_opts= -b -i -d test t2;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
alter table t3 algorithm=inplace, max_rows=150000000;
|
|
let $ndb_desc_opts= -b -i -d test t3;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
|
|
let $t1_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't1', Value, 1);
|
|
|
|
let $t2_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't2', Value, 1);
|
|
|
|
let $t3_part_count_now = query_get_value(select count(*) as Value from information_schema.partitions where table_schema = 'test' and table_name = 't3', Value, 1);
|
|
|
|
--disable_query_log
|
|
--echo partitions added to t1 (expect 3)
|
|
eval select $t1_part_count_now - $t1_part_count_start as t1_added;
|
|
--echo partitions added to t2 (expect 5)
|
|
eval select $t2_part_count_now - $t2_part_count_start as t2_added;
|
|
--echo partitions added to t3 (expect 4)
|
|
eval select $t3_part_count_now - $t3_part_count_start as t3_added;
|
|
--enable_query_log
|
|
|
|
select count(*) from t1;
|
|
select count(*) from t2;
|
|
--sorted_result
|
|
select * from t1 where a < 20;
|
|
--sorted_result
|
|
select * from t1 where a = 20;
|
|
--sorted_result
|
|
select * from t1 where a = 30;
|
|
--sorted_result
|
|
select * from t1 where a = 40;
|
|
--sorted_result
|
|
select * from t1 where a = 50;
|
|
select * from t1 where b = 20;
|
|
select * from t1 where b = 30;
|
|
select * from t1 where b = 40;
|
|
select * from t1 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t2 where a < 20;
|
|
--sorted_result
|
|
select * from t2 where a = 20;
|
|
--sorted_result
|
|
select * from t2 where a = 30;
|
|
--sorted_result
|
|
select * from t2 where a = 40;
|
|
--sorted_result
|
|
select * from t2 where a = 50;
|
|
select * from t2 where b = 20;
|
|
select * from t2 where b = 30;
|
|
select * from t2 where b = 40;
|
|
select * from t2 where b = 50;
|
|
|
|
--sorted_result
|
|
select * from t3 where a < 20;
|
|
--sorted_result
|
|
select * from t3 where a = 20;
|
|
--sorted_result
|
|
select * from t3 where a = 30;
|
|
--sorted_result
|
|
select * from t3 where a = 40;
|
|
--sorted_result
|
|
select * from t3 where a = 50;
|
|
select * from t3 where b = 20;
|
|
select * from t3 where b = 30;
|
|
select * from t3 where b = 40;
|
|
select * from t3 where b = 50;
|
|
|
|
# Fragment counts for unique index may now differ from main table
|
|
# since unique index do not reorg
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t1;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t2;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t3;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
let ndb_database=test;
|
|
let ndb_table=t5;
|
|
--source suite/ndb/include/ndb_check_unique_index.inc
|
|
|
|
alter table t5 algorithm=inplace, add partition partitions 1;
|
|
let $ndb_desc_opts= -b -i -d test t5;
|
|
source suite/ndb/include/ndb_desc_print.inc;
|
|
|
|
drop table t1,t2,t3,t5;
|
|
alter tablespace ts1 drop datafile 'datafile.dat';
|
|
drop tablespace ts1;
|
|
drop logfile group lg1 engine = ndb;
|