mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge c-0c0be253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-5.1-new
into c-0c0be253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2604-push sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/ha_ndbcluster_binlog.cc: Auto merged
This commit is contained in:
747
mysql-test/include/partition_1.inc
Normal file
747
mysql-test/include/partition_1.inc
Normal file
@ -0,0 +1,747 @@
|
||||
# include/partition_1.inc
|
||||
#
|
||||
# Partitionong tests
|
||||
#
|
||||
# Attention: The variable
|
||||
# $engine -- Storage engine to be tested.
|
||||
# must be set within the script sourcing this file.
|
||||
#
|
||||
--disable_abort_on_error
|
||||
SET AUTOCOMMIT= 1;
|
||||
|
||||
##### Disabled testcases, because of open bugs #####
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # There are several testcases disabled because ouf the open bugs
|
||||
--echo # #15407 , #15408 , #15890 , #15961 , #13447 , #15966 , #15968, #16370
|
||||
--echo #------------------------------------------------------------------------
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
let $fixed_bug15407= 0;
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
let $fixed_bug15408= 0;
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
let $fixed_bug15890= 0;
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
let $fixed_bug15961= 0;
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
let $fixed_bug13447= 0;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
let $fixed_bug15966= 0;
|
||||
# Bug#15968 Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
let $fixed_bug15968= 0;
|
||||
# Bug #16370 Partitions: subpartitions names not mentioned in SHOW CREATE TABLE output
|
||||
let $fixed_bug16370= 0;
|
||||
|
||||
##### Option, for displaying files #####
|
||||
#
|
||||
# Attention: Displaying the directory content via "ls var/master-data/test/t*"
|
||||
# is probably not portable.
|
||||
# let $ls= 0; disables the execution of "ls ....."
|
||||
let $ls= 0;
|
||||
|
||||
################################################################################
|
||||
# Partitioning syntax
|
||||
#
|
||||
# CREATE TABLE .... (column-list ..)
|
||||
# PARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | RANGE '(' ( expr ) ')'
|
||||
# | LIST '(' ( expr ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [PARTITIONS num ]
|
||||
# [SUBPARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [SUBPARTITIONS num ]
|
||||
# ]
|
||||
# [ '('
|
||||
# ( PARTITION logical-name
|
||||
# [ VALUES LESS THAN '(' ( expr | MAX_VALUE ) ')' ]
|
||||
# [ VALUES IN '(' (expr)+ ')' ]
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ [ STORAGE ] ENGINE [ '=' ] storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# [ '('
|
||||
# ( SUBPARTITION logical-name
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ STORAGE ENGINE = storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# )+
|
||||
# ')'
|
||||
# )+
|
||||
# ')'
|
||||
# ]
|
||||
################################################################################
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 0. Setting of auxiliary variables + Creation of an auxiliary table
|
||||
--echo # needed in all testcases
|
||||
--echo #------------------------------------------------------------------------
|
||||
let $max_row= `SELECT @max_row`;
|
||||
let $max_row_div2= `SELECT @max_row DIV 2`;
|
||||
let $max_row_div3= `SELECT @max_row DIV 3`;
|
||||
let $max_row_div4= `SELECT @max_row DIV 4`;
|
||||
let $max_int_4= 2147483647;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t0_template;
|
||||
--enable_warnings
|
||||
CREATE TABLE t0_template ( f1 INTEGER, f2 char(20), PRIMARY KEY(f1))
|
||||
ENGINE = MEMORY;
|
||||
--echo # Logging of <max_row> INSERTs into t0_template suppressed
|
||||
--disable_query_log
|
||||
let $num= $max_row;
|
||||
while ($num)
|
||||
{
|
||||
eval INSERT INTO t0_template SET f1 = $num, f2 = '---$num---';
|
||||
|
||||
dec $num;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1. Some syntax checks
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1.1 Subpartioned table without subpartitioning rule must be rejected
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
if ($fixed_bug15961)
|
||||
{
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
--error 9999
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11));
|
||||
}
|
||||
--echo # FIXME Implement testcases, where it is checked that all create and
|
||||
--echo # alter table statements
|
||||
--echo # - with missing mandatory parameters are rejected
|
||||
--echo # - with optional parameters are accepted
|
||||
--echo # - with wrong combinations of optional parameters are rejected
|
||||
--echo # - ............
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 2. Checks where the engine is assigned on all supported (CREATE TABLE
|
||||
--echo # statement) positions + basic operations on the tables
|
||||
--echo # Storage engine mixups are currently (2005-12-23) not supported
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 2.1 non partitioned table (for comparison)
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine;
|
||||
# MLML Full size (as check of check routine)
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.2 Assignment of storage engine just after column list only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1) PARTITIONS 2;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.3 Assignment of storage engine just after partition or subpartition
|
||||
--echo # name only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.4 Some but not all named partitions or subpartitions get a storage
|
||||
--echo # engine assigned
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 ,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22 )
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.5 Storage engine assignment after partition name + after name of
|
||||
--echo # subpartitions belonging to another partition
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) ENGINE = $engine
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4) ENGINE = $engine
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.6 Precedence of storage engine assignments
|
||||
--echo # 2.6.1 Storage engine assignment after column list + after partition
|
||||
--echo # or subpartition name
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 2.6.2 Storage engine assignment after partition name + after
|
||||
--echo # subpartition name
|
||||
# in partition part + in sub partition part
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) STORAGE ENGINE = $engine
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 2.7 Session default engine differs from engine used within create table
|
||||
eval SET SESSION storage_engine=$engine_other;
|
||||
if ($fixed_bug15966)
|
||||
{
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) ( PARTITION part1 ENGINE = $engine);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine));
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 3. Check assigning the number of partitions and subpartitions
|
||||
--echo # with and without named partitions/subpartitions
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.1 (positive) without partition/subpartition number assignment
|
||||
--echo # 3.1.1 no partition number, no named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.1.2 no partition number, named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Attention: Several combinations are impossible
|
||||
# If subpartitioning exists
|
||||
# - partitioning algorithm must be RANGE or LIST
|
||||
# This implies the assignment of named partitions.
|
||||
# - subpartitioning algorithm must be HASH or KEY
|
||||
--echo # 3.1.3 variations on no partition/subpartition number, named partitions,
|
||||
--echo # different subpartitions are/are not named
|
||||
#
|
||||
# Partition name -- "properties"
|
||||
# part1 -- first/non last
|
||||
# part2 -- non first/non last
|
||||
# part3 -- non first/ last
|
||||
#
|
||||
# Testpattern:
|
||||
# named subpartitions in
|
||||
# Partition part1 part2 part3
|
||||
# N N N
|
||||
# N N Y
|
||||
# N Y N
|
||||
# N Y Y
|
||||
# Y N N
|
||||
# Y N Y
|
||||
# Y Y N
|
||||
# Y Y Y
|
||||
--disable_query_log
|
||||
let $part0= CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1);
|
||||
#
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2),';
|
||||
let $part1_N= `SELECT @AUX`;
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 , SUBPARTITION subpart12 ),';
|
||||
let $part1_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row),';
|
||||
let $part2_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row)
|
||||
(SUBPARTITION subpart21 , SUBPARTITION subpart22 ),';
|
||||
let $part2_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4))';
|
||||
let $part3_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart31 , SUBPARTITION subpart32 ))';
|
||||
let $part3_Y= `SELECT @AUX`;
|
||||
--enable_query_log
|
||||
|
||||
eval $part0 $part1_N $part2_N $part3_N ;
|
||||
DROP TABLE t1;
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
if ($fixed_bug15407)
|
||||
{
|
||||
eval $part0 $part1_N $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval $part0 $part1_Y $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 3.2 partition/subpartition numbers good and bad values and notations
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.2.1 partition/subpartition numbers INTEGER notation
|
||||
# ML: "positive/negative" is my private judgement. It need no to correspond
|
||||
# with the server response.
|
||||
# (positive) number = 2
|
||||
let $part_number= 2;
|
||||
--source include/partition_11.inc
|
||||
# (positive) special case number = 1
|
||||
let $part_number= 1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0 is non sense
|
||||
let $part_number= 0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -1 is non sense
|
||||
let $part_number= -1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1000000 is too huge
|
||||
let $part_number= 1000000;
|
||||
--source include/partition_11.inc
|
||||
|
||||
if ($fixed_bug15890)
|
||||
{
|
||||
--echo # 3.2.2 partition/subpartition numbers DECIMAL notation
|
||||
# (positive) number = 2.0
|
||||
let $part_number= 2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0 is non sense
|
||||
let $part_number= -2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) case number = 0.0 is non sense
|
||||
let $part_number= 0.0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) number = 1.5 is non sense
|
||||
let $part_number= 1.5;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is too huge
|
||||
let $part_number= 999999999999999999999999999999.999999999999999999999999999999;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is nearly zero
|
||||
let $part_number= 0.000000000000000000000000000001;
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.3 partition/subpartition numbers FLOAT notation
|
||||
##### FLOAT notation
|
||||
# (positive) number = 2.0E+0
|
||||
let $part_number= 2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (positive) number = 0.2E+1
|
||||
let $part_number= 0.2E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0E+0 is non sense
|
||||
let $part_number= -2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.15E+1 is non sense
|
||||
let $part_number= 0.15E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.0E+300 is zero
|
||||
let $part_number= 0.0E+300;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) 1E+300 is too huge
|
||||
let $part_number= 1E+300;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1E-300 is nearly zero
|
||||
let $part_number= 1E-300;
|
||||
--source include/partition_11.inc
|
||||
}
|
||||
|
||||
--echo # 3.2.4 partition/subpartition numbers STRING notation
|
||||
##### STRING notation
|
||||
# (negative?) case number = '2'
|
||||
let $part_number= '2';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '2.0'
|
||||
let $part_number= '2.0';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '0.2E+1'
|
||||
let $part_number= '0.2E+1';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= '2A';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= 'A2';
|
||||
--source include/partition_11.inc
|
||||
# (negative) empty string
|
||||
let $part_number= '';
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= 'GARBAGE';
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.5 partition/subpartition numbers other notations
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= 2A;
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= A2;
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= GARBAGE;
|
||||
--source include/partition_11.inc
|
||||
|
||||
# (negative?) double quotes
|
||||
let $part_number= "2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= "2A";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= "A2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= "GARBAGE";
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.3 Mixups of assigned partition/subpartition numbers and names
|
||||
--echo # 3.3.1 (positive) number of partition/subpartition
|
||||
--echo # = number of named partition/subpartition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1, PARTITION part2 ) ;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.3.2 (positive) number of partition/subpartition ,
|
||||
--echo # 0 (= no) named partition/subpartition
|
||||
--echo # already checked above
|
||||
--echo # 3.3.3 (negative) number of partitions/subpartitions
|
||||
--echo # > number of named partitions/subpartitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 ),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21 )
|
||||
);
|
||||
--echo # 3.3.4 (negative) number of partitions < number of named partitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 1 ( PARTITION part1, PARTITION part2 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 4. Checks of logical partition/subpartition name
|
||||
--echo # file name clashes during CREATE TABLE
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 4.1 (negative) A partition name used more than once
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part1);
|
||||
#
|
||||
if ($fixed_bug15408)
|
||||
{
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart11)
|
||||
);
|
||||
}
|
||||
--echo # FIXME Implement testcases with filename problems
|
||||
--echo # existing file of other table --- partition/subpartition file name
|
||||
--echo # partition/subpartition file name --- file of the same table
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 5. Alter table experiments
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 5.1 alter table add partition
|
||||
--echo # 5.1.1 (negative) add partition to non partitioned table
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20));
|
||||
--source include/partition_layout.inc
|
||||
# MyISAM gets ER_PARTITION_MGMT_ON_NONPARTITIONED and NDB 1005
|
||||
# The error code of NDB differs, because all NDB tables are partitioned even
|
||||
# if the CREATE TABLE does not contain a partitioning clause.
|
||||
--error ER_PARTITION_MGMT_ON_NONPARTITIONED,1005
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.2 Add one partition to a table with one partition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
--disable_query_log
|
||||
eval SELECT $engine = 'NDB' INTO @aux;
|
||||
let $my_exit= `SELECT @aux`;
|
||||
if ($my_exit)
|
||||
{
|
||||
exit;
|
||||
}
|
||||
--enable_query_log
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.3 Several times add one partition to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name before first existing partition name
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name between existing partition names
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Partition name after all existing partition names
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.4 Add several partitions to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0, PARTITION part2, PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.5 (negative) Add partitions to a table with some partitions
|
||||
--echo # clash on new and already existing partition names
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
# Clash on first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
# Clash on non first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
# Clash on non first/last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part3);
|
||||
# Clash on all partition names
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
DROP TABLE t1;
|
||||
|
||||
# FIXME Is there any way to add a subpartition to an already existing partition
|
||||
|
||||
--echo # 5.2 alter table add subpartition
|
||||
--echo # 5.2.1 Add one subpartition to a table with subpartitioning rule and
|
||||
--echo # no explicit defined subpartitions
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_layout.inc
|
||||
}
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
eval ALTER TABLE t1 ADD PARTITION (PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_12.inc
|
||||
}
|
||||
DROP TABLE t1;
|
73
mysql-test/include/partition_10.inc
Normal file
73
mysql-test/include/partition_10.inc
Normal file
@ -0,0 +1,73 @@
|
||||
# include/partition_10.inc
|
||||
#
|
||||
# Do some basic checks on a table.
|
||||
#
|
||||
# FIXME: Do not write the statements and results, if SQL return code = 0
|
||||
# and result set like expected. Write a message, that all is like
|
||||
# expected instead.
|
||||
#
|
||||
# All SELECTs are so written, that we get my_value = 1, when everything
|
||||
# is like expected.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
||||
# (mass) Insert of $max_row records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
34
mysql-test/include/partition_11.inc
Normal file
34
mysql-test/include/partition_11.inc
Normal file
@ -0,0 +1,34 @@
|
||||
# include/partition_11.inc
|
||||
#
|
||||
# Try to create a table with the given partition number
|
||||
#
|
||||
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS $part_number;
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
||||
#### Try to create a table with the given subpartition number
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1)
|
||||
SUBPARTITIONS $part_number
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2), PARTITION part2 VALUES LESS THAN ($max_int_4));
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
65
mysql-test/include/partition_12.inc
Normal file
65
mysql-test/include/partition_12.inc
Normal file
@ -0,0 +1,65 @@
|
||||
# include/partition_12.inc
|
||||
#
|
||||
# Do some basic things on a table, if the SQL command executed just before
|
||||
# sourcing this file was successful.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# (mass) Insert max_row_div2 + 1 records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN $max_row_div2 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
13
mysql-test/include/partition_layout.inc
Normal file
13
mysql-test/include/partition_layout.inc
Normal file
@ -0,0 +1,13 @@
|
||||
# include/partition_layout.inc
|
||||
#
|
||||
# Print partitioning related informations about the table t1
|
||||
#
|
||||
|
||||
eval SHOW CREATE TABLE t1;
|
||||
|
||||
# Optional (most probably issues with separators and case sensitivity)
|
||||
# listing of files belonging to the table t1
|
||||
if ($ls)
|
||||
{
|
||||
--exec ls var/master-data/test/t1*
|
||||
}
|
@ -110,7 +110,7 @@ t3 CREATE TABLE `t3` (
|
||||
`id` int(11) NOT NULL,
|
||||
`name` char(255) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
select * from t3;
|
||||
id name
|
||||
1 Explorer
|
||||
|
@ -9,7 +9,7 @@ t1 CREATE TABLE `t1` (
|
||||
`pk1` int(11) NOT NULL,
|
||||
`b` bit(64) default NULL,
|
||||
PRIMARY KEY (`pk1`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
insert into t1 values
|
||||
(0,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||
(1,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||
|
@ -13,7 +13,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
@ -471,7 +471,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
|
@ -80,3 +80,12 @@ t1 CREATE TABLE `t1` (
|
||||
PRIMARY KEY USING HASH (`a`,`b`,`c`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b)
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
|
@ -65,6 +65,8 @@ partitions 3
|
||||
(partition x1 tablespace ts1,
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
@ -108,6 +110,127 @@ insert into t1 values (3);
|
||||
insert into t1 values (4);
|
||||
UNLOCK TABLES;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
1 desk organiser 2003-10-15
|
||||
2 CD player 1993-11-05
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
a b
|
||||
4 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION x1 VALUES IN (1) ENGINE = MEMORY)
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
REPLACE t1 SET a = 4;
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
insert into t1 values (2), (3);
|
||||
insert into t1 values (4);
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Table has no partition for value 1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (a) PARTITIONS 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
insert into t1 values (1);
|
||||
update t1 set a = 5;
|
||||
ERROR HY000: Table has no partition for value 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
@ -119,8 +242,8 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
partition p2 values less than (25));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -139,7 +262,7 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
1724
mysql-test/r/partition_02myisam.result
Normal file
1724
mysql-test/r/partition_02myisam.result
Normal file
File diff suppressed because it is too large
Load Diff
1361
mysql-test/r/partition_03ndb.result
Normal file
1361
mysql-test/r/partition_03ndb.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
partition by list (a)
|
||||
partitions 3
|
||||
(partition x1 values in (1,2,9,4) tablespace ts1,
|
||||
@ -544,6 +545,10 @@ partitions 2
|
||||
partition x2 values in (5));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '4,
|
||||
partition x2 values in (5))' at line 8
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
ERROR 42S22: Unknown column 'x1' in 'partition function'
|
||||
CREATE TABLE t1(a int)
|
||||
PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5));
|
||||
insert into t1 values (10);
|
||||
|
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (a int, b int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x0 VALUES LESS THAN (2),
|
||||
@ -10,48 +11,52 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x3, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x10;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
ERROR HY000: More partitions to reorganise than there are partitions
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: When reorganising a set of partitions they must be in consecutive order
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Error in list of partitions to REORGANIZE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
PARTITIONS 2;
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION p1);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name p1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
(PARTITION x0, PARTITION x1, PARTITION x2, PARTITION x3, PARTITION x3);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY KEY (a)
|
||||
@ -100,7 +105,7 @@ PARTITION x1 VALUES LESS THAN (8));
|
||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 1;
|
||||
ERROR HY000: For RANGE partitions each partition must be defined
|
||||
ALTER TABLE t1 DROP PARTITION x2;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 COALESCE PARTITION 1;
|
||||
ERROR HY000: COALESCE PARTITION can only be used on HASH/KEY partitions
|
||||
ALTER TABLE t1 DROP PARTITION x1;
|
||||
|
@ -19,6 +19,7 @@ innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
||||
subselect : Bug#15706
|
||||
ps_7ndb : dbug assert in RBR mode when executing test suite
|
||||
rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||
partition_03ndb : Bug#16385
|
||||
events : Affects flush test case. A table lock not released somewhere
|
||||
ndb_binlog_basic : Results are not deterministic, Tomas will fix
|
||||
rpl_ndb_basic : Bug#16228
|
||||
|
@ -63,3 +63,19 @@ insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1);
|
||||
show create table t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #13155: Problem in Create Table using SHOW CREATE TABLE syntax
|
||||
#
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
@ -8,6 +8,7 @@
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key no partition defined => OK
|
||||
#
|
||||
@ -97,6 +98,9 @@ partitions 3
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -162,6 +166,141 @@ UNLOCK TABLES;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13644 DROP PARTITION NULL's DATE column
|
||||
#
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
|
||||
SELECT * from t1 ORDER BY a;
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13442; Truncate Partitioned table doesn't work
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13445 Partition by KEY method crashes server
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13438: Engine clause in PARTITION clause causes crash
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13440: REPLACE causes crash in partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
REPLACE t1 SET a = 4;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #14365: Crash if value too small in list partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
|
||||
insert into t1 values (2), (3);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (4);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (1);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 14327: PARTITIONS clause gets lost in SHOW CREATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13446: Update to value outside of list values doesn't give error
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
|
||||
insert into t1 values (1);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
update t1 set a = 5;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13441: Analyze on partitioned table didn't work
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
analyze table t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
@ -180,9 +319,9 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
partition p2 values less than (25));
|
||||
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
@ -199,7 +338,8 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
|
25
mysql-test/t/partition_02myisam.test
Normal file
25
mysql-test/t/partition_02myisam.test
Normal file
@ -0,0 +1,25 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests MyISAM tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'MYISAM';
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
26
mysql-test/t/partition_03ndb.test
Normal file
26
mysql-test/t/partition_03ndb.test
Normal file
@ -0,0 +1,26 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests NDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT NDB SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'NDB' ;
|
||||
-- source include/have_ndb.inc
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key stand-alone error
|
||||
#
|
||||
@ -727,6 +731,14 @@ partitions 2
|
||||
(partition x1 values in 4,
|
||||
partition x2 values in (5));
|
||||
|
||||
#
|
||||
# Bug #13439: Crash when LESS THAN (non-literal)
|
||||
#
|
||||
--error 1054
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
|
||||
#
|
||||
# No partition for the given value
|
||||
#
|
||||
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Try faulty DROP PARTITION and COALESCE PARTITION
|
||||
#
|
||||
@ -21,7 +25,7 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
|
||||
@ -38,30 +42,35 @@ ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
|
||||
--error ER_REORG_PARTITION_NOT_EXIST
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
|
||||
--error ER_CONSECUTIVE_REORG_PARTITIONS
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_DROP_PARTITION_NON_EXISTENT
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
|
Reference in New Issue
Block a user