mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
0a9e4c79d4
Bug#31610 Remove outdated and redundant tests: partition_02myisam partition_03ndb Bug#32405 testsuite parts: partition_char_myisam wrong content and cleanup of testsuite - remove/correct wrong comments - remove workarounds for fixed bugs - replace error numbers with error names - exclude subtests from execution which fail now because of new limitations for partitioning functions - remove code for the no more intended dual use fast test in regression tests/slow test in testsuite - analyze and fix problems with partition_char_innodb - fix problems caused by last change of error numbers - Introduce error name to error number mapping which makes maintenance after next error renumbering easier BitKeeper/deleted/.del-partition_03ndb.result: Rename: mysql-test/suite/ndb/r/partition_03ndb.result -> BitKeeper/deleted/.del-partition_03ndb.result BitKeeper/deleted/.del-partition_03ndb.test: Rename: mysql-test/suite/ndb/t/partition_03ndb.test -> BitKeeper/deleted/.del-partition_03ndb.test BitKeeper/deleted/.del-partition_1.inc: Rename: mysql-test/include/partition_1.inc -> BitKeeper/deleted/.del-partition_1.inc BitKeeper/deleted/.del-partition_02myisam.result: Rename: mysql-test/r/partition_02myisam.result -> BitKeeper/deleted/.del-partition_02myisam.result BitKeeper/deleted/.del-partition_02myisam.test: Rename: mysql-test/t/partition_02myisam.test -> BitKeeper/deleted/.del-partition_02myisam.test BitKeeper/deleted/.del-partition_char_myisam.result: Rename: mysql-test/suite/parts/r/partition_char_myisam.result -> BitKeeper/deleted/.del-partition_char_myisam.result mysql-test/suite/parts/inc/methods1.inc: Fixes + cleanup mysql-test/suite/parts/inc/part_blocked_sql_funcs_main.inc: Fixes + cleanup mysql-test/suite/parts/inc/part_supported_sql_funcs_delete.inc: Fixes + cleanup mysql-test/suite/parts/inc/part_supported_sql_funcs_main.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition.pre: Fixes + cleanup mysql-test/suite/parts/inc/partition_10.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_11.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_12.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_20.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter3.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter4.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter_1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter_11.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter_13.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_alter_41.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_basic.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_binary.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_bit.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_blob.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_char.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_check.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_check_drop.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_check_read.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_check_read1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_check_read2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_cleanup.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_directory.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_engine.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_enum.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_layout.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_layout_check1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_layout_check2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_methods1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_methods2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_set.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_supported_sql_funcs.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_syntax.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_syntax_1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_syntax_2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_text.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_trigg1.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_trigg2.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_trigg3.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_value.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_varbinary.inc: Fixes + cleanup mysql-test/suite/parts/inc/partition_varchar.inc: Fixes + cleanup mysql-test/suite/parts/r/partition_alter1_innodb.result: Updated result mysql-test/suite/parts/r/partition_alter1_myisam.result: Updated result mysql-test/suite/parts/r/partition_alter2_innodb.result: Updated result mysql-test/suite/parts/r/partition_alter2_myisam.result: Updated result mysql-test/suite/parts/r/partition_alter3_innodb.result: Updated result mysql-test/suite/parts/r/partition_alter3_myisam.result: Updated result mysql-test/suite/parts/r/partition_alter4_innodb.result: Updated result mysql-test/suite/parts/r/partition_alter4_myisam.result: Updated result mysql-test/suite/parts/r/partition_basic_innodb.result: Updated result mysql-test/suite/parts/r/partition_basic_myisam.result: Updated result mysql-test/suite/parts/r/partition_bit_myisam.result: Updated result mysql-test/suite/parts/r/partition_char_innodb.result: Updated result mysql-test/suite/parts/r/partition_datetime_myisam.result: Updated result mysql-test/suite/parts/r/partition_decimal_myisam.result: Updated result mysql-test/suite/parts/r/partition_engine_innodb.result: Updated result mysql-test/suite/parts/r/partition_engine_myisam.result: Updated result mysql-test/suite/parts/r/partition_float_innodb.result: Updated result mysql-test/suite/parts/r/partition_float_myisam.result: Updated result mysql-test/suite/parts/r/partition_int_myisam.result: Updated result mysql-test/suite/parts/r/partition_special_myisam.result: Updated result mysql-test/suite/parts/r/partition_syntax_innodb.result: Updated result mysql-test/suite/parts/r/partition_syntax_myisam.result: Updated result mysql-test/suite/parts/t/disabled.def: Fixes + cleanup mysql-test/suite/parts/t/part_blocked_sql_func_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/part_blocked_sql_func_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/part_supported_sql_func_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/part_supported_sql_func_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/part_supported_sql_func_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter1_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter1_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter1_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter2_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter2_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter2_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter3_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter3_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter4_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_alter4_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_basic_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_basic_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_basic_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_bit_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_bit_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_bit_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_char_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_char_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_datetime_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_datetime_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_decimal_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_decimal_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_engine_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_engine_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_engine_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_float_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_float_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_int_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_int_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_int_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_special_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_special_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_syntax_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_syntax_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_syntax_ndb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_value_innodb.test: Fixes + cleanup mysql-test/suite/parts/t/partition_value_myisam.test: Fixes + cleanup mysql-test/suite/parts/t/partition_value_ndb.test: Fixes + cleanup mysql-test/suite/parts/r/partition_char_myisam.result: Updated result bk rm + new file is caused by bk complaining about filetype
748 lines
28 KiB
PHP
748 lines
28 KiB
PHP
################################################################################
|
|
# inc/partition_syntax.inc #
|
|
# #
|
|
# Purpose: #
|
|
# Tests around Create partitioned tables syntax #
|
|
# #
|
|
#------------------------------------------------------------------------------#
|
|
# Original Author: mleich #
|
|
# Original Date: 2006-03-05 #
|
|
# Change Author: #
|
|
# Change Date: #
|
|
# Change: #
|
|
################################################################################
|
|
|
|
# FIXME Implement testcases, where it is checked that all create and
|
|
# alter table statements
|
|
# - with missing mandatory parameters are rejected
|
|
# - with optional parameters are accepted
|
|
# - with wrong combinations of optional parameters are rejected
|
|
# - ............
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 1. Any PRIMARY KEYs or UNIQUE INDEXes must contain the columns used
|
|
--echo # within the partitioning functions
|
|
--echo #========================================================================
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
#
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1.1 column of partitioning function not included in PRIMARY KEY
|
|
--echo # PARTITION BY HASH/KEY/LIST/RANGE
|
|
--echo #------------------------------------------------------------------------
|
|
#----------- PARTITION BY HASH
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY HASH(f_int1) PARTITIONS 2;
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
|
|
#----------- PARTITION BY KEY
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY KEY(f_int1) PARTITIONS 2;
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 2;
|
|
#----------- PARTITION BY LIST
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY LIST(f_int1)
|
|
(PARTITION part1 VALUES IN (1));
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY LIST(f_int1 + f_int2)
|
|
(PARTITION part1 VALUES IN (1));
|
|
#----------- PARTITION BY RANGE
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
(PARTITION part1 VALUES LESS THAN (1));
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY RANGE(f_int1 + f_int2)
|
|
(PARTITION part1 VALUES LESS THAN (1));
|
|
|
|
#
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1.2 column of partitioning function not included in UNIQUE INDEX
|
|
--echo # PARTITION BY HASH/KEY/LIST/RANGE
|
|
--echo # Variant a) Without additional PRIMARY KEY
|
|
--echo # Variant b) With correct additional PRIMARY KEY
|
|
--echo # Variant 1) one column in partitioning function
|
|
--echo # Variant 2) two columns in partitioning function
|
|
--echo #------------------------------------------------------------------------
|
|
# Note: If the CREATE TABLE statement contains no PRIMARY KEY but
|
|
# UNIQUE INDEXes the MySQL layer tells the storage to use
|
|
# the first UNIQUE INDEX as PRIMARY KEY.
|
|
|
|
let $unique_index= UNIQUE INDEX (f_int2);
|
|
|
|
#----------- PARTITION BY HASH
|
|
let $partition_scheme= PARTITION BY HASH(f_int1) PARTITIONS 2;
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
let $partition_scheme= PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY KEY
|
|
let $partition_scheme= PARTITION BY KEY(f_int1) PARTITIONS 2;
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
let $partition_scheme= PARTITION BY KEY(f_int1,f_int2) PARTITIONS 2;
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY LIST
|
|
let $partition_scheme= PARTITION BY LIST(MOD(f_int1,3))
|
|
(PARTITION partN VALUES IN (NULL),
|
|
PARTITION part0 VALUES IN (0),
|
|
PARTITION part1 VALUES IN (1),
|
|
PARTITION part2 VALUES IN (2));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
let $partition_scheme= PARTITION BY LIST(MOD(f_int1 + f_int2,3))
|
|
(PARTITION partN VALUES IN (NULL),
|
|
PARTITION part0 VALUES IN (0),
|
|
PARTITION part1 VALUES IN (1),
|
|
PARTITION part2 VALUES IN (2));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY RANGE
|
|
let $partition_scheme= PARTITION BY RANGE(f_int1)
|
|
(PARTITION part1 VALUES LESS THAN (1),
|
|
PARTITION part2 VALUES LESS THAN (2147483646));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
let $partition_scheme= PARTITION BY RANGE(f_int1 + f_int2)
|
|
(PARTITION part1 VALUES LESS THAN (1),
|
|
PARTITION part2 VALUES LESS THAN (2147483646));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
|
|
#
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1.3 column of subpartitioning function not included in PRIMARY KEY
|
|
--echo # PARTITION BY RANGE/LIST -- SUBPARTITION BY HASH/KEY
|
|
--echo #------------------------------------------------------------------------
|
|
|
|
#----------- PARTITION BY RANGE -- SUBPARTITION BY HASH
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY RANGE(f_int2) SUBPARTITION BY HASH(f_int1)
|
|
(PARTITION part1 VALUES LESS THAN (1)
|
|
(SUBPARTITION subpart1));
|
|
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY RANGE(f_int2) SUBPARTITION BY KEY(f_int1)
|
|
(PARTITION part1 VALUES LESS THAN (1)
|
|
(SUBPARTITION subpart1));
|
|
#----------- PARTITION BY LIST -- SUBPARTITION BY HASH
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY LIST(f_int2) SUBPARTITION BY HASH(f_int1)
|
|
(PARTITION part1 VALUES IN (1)
|
|
(SUBPARTITION subpart1));
|
|
#----------- PARTITION BY LIST -- SUBPARTITION BY KEY
|
|
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int2)
|
|
)
|
|
PARTITION BY LIST(f_int2) SUBPARTITION BY KEY(f_int1)
|
|
(PARTITION part1 VALUES IN (1)
|
|
(SUBPARTITION subpart1));
|
|
|
|
#
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 1.4 column of subpartitioning function not included in UNIQUE INDEX
|
|
--echo # PARTITION BY RANGE/LIST -- SUBPARTITION BY HASH/KEY
|
|
--echo # Variant a) Without additional PRIMARY KEY
|
|
--echo # Variant b) With correct additional PRIMARY KEY
|
|
--echo #------------------------------------------------------------------------
|
|
let $partition_scheme= PARTITION BY RANGE(f_int2)
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 3
|
|
(PARTITION part1 VALUES LESS THAN (1),
|
|
PARTITION part2 VALUES LESS THAN (2147483646));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
|
|
let $partition_scheme= PARTITION BY RANGE(f_int2)
|
|
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
|
|
(PARTITION part1 VALUES LESS THAN (1),
|
|
PARTITION part2 VALUES LESS THAN (2147483646));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY LIST -- SUBPARTITION BY HASH
|
|
let $partition_scheme= PARTITION BY LIST(MOD(f_int2,3))
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
|
|
(PARTITION partN VALUES IN (NULL),
|
|
PARTITION part0 VALUES IN (0),
|
|
PARTITION part1 VALUES IN (1),
|
|
PARTITION part2 VALUES IN (2));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
#----------- PARTITION BY LIST -- SUBPARTITION BY KEY
|
|
let $partition_scheme= PARTITION BY LIST(MOD(f_int2,3))
|
|
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 2
|
|
(PARTITION partN VALUES IN (NULL),
|
|
PARTITION part0 VALUES IN (0),
|
|
PARTITION part1 VALUES IN (1),
|
|
PARTITION part2 VALUES IN (2));
|
|
--source suite/parts/inc/partition_syntax_2.inc
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 2 Some properties around subpartitioning
|
|
--echo #========================================================================
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 2.1 Subpartioned table without subpartitioning rule must be rejected
|
|
--echo #------------------------------------------------------------------------
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
|
--error ER_SUBPARTITION_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
( PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11));
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 2.2 Every partition must have the same number of subpartitions.
|
|
--echo # This is a limitation of MySQL 5.1, which could be removed in
|
|
--echo # later releases.
|
|
--echo #------------------------------------------------------------------------
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list,
|
|
PRIMARY KEY (f_int1)
|
|
)
|
|
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
|
|
(
|
|
PARTITION part1 VALUES LESS THAN (0)
|
|
(SUBPARTITION subpart1),
|
|
PARTITION part2 VALUES LESS THAN ($max_row_div4)
|
|
(SUBPARTITION subpart1, SUBPARTITION subpart2));
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 3 VALUES clauses
|
|
--echo #========================================================================
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.1 The constants in VALUES IN clauses must differ
|
|
--echo #------------------------------------------------------------------------
|
|
--error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(MOD(f_int1,2))
|
|
( PARTITION part1 VALUES IN (-1),
|
|
PARTITION part2 VALUES IN (0),
|
|
PARTITION part3 VALUES IN (-1));
|
|
# constant followed by the same constant
|
|
--error ER_RANGE_NOT_INCREASING_ERROR
|
|
CREATE TABLE t1 (f1 BIGINT, f2 BIGINT)
|
|
PARTITION BY RANGE(f1)
|
|
(PARTITION part1 VALUES LESS THAN (0),
|
|
PARTITION part2 VALUES LESS THAN (0),
|
|
PARTITION part3 VALUES LESS THAN (10000));
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.2 The constants in VALUES LESS must be in increasing order
|
|
--echo #------------------------------------------------------------------------
|
|
# constant followed somewhere by the smaller constant
|
|
--error ER_RANGE_NOT_INCREASING_ERROR
|
|
CREATE TABLE t1 (f1 BIGINT, f2 BIGINT)
|
|
PARTITION BY RANGE(f1)
|
|
(PARTITION part1 VALUES LESS THAN (0),
|
|
PARTITION part2 VALUES LESS THAN (-1),
|
|
PARTITION part3 VALUES LESS THAN (10000));
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.3 LIST partitions must be defined with VALUES IN
|
|
--echo #------------------------------------------------------------------------
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(MOD(f_int1,2))
|
|
( PARTITION part1 VALUES LESS THAN (-1),
|
|
PARTITION part2 VALUES LESS THAN (0),
|
|
PARTITION part3 VALUES LESS THAN (1000));
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.4 RANGE partitions must be defined with VALUES LESS THAN
|
|
--echo #------------------------------------------------------------------------
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
( PARTITION part1 VALUES IN (-1),
|
|
PARTITION part2 VALUES IN (0),
|
|
PARTITION part3 VALUES IN (1000));
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.5 Use of NULL in VALUES clauses
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 3.5.1 NULL in RANGE partitioning clause
|
|
--echo # 3.5.1.1 VALUE LESS THAN (NULL) is not allowed
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
( PARTITION part1 VALUES LESS THAN (NULL),
|
|
PARTITION part2 VALUES LESS THAN (1000));
|
|
--echo # 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
( PARTITION part1 VALUES LESS THAN (NULL),
|
|
PARTITION part2 VALUES LESS THAN (1000));
|
|
--echo # 3.5.2 NULL in LIST partitioning clause
|
|
--echo # 3.5.2.1 VALUE IN (NULL)
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(MOD(f_int1,2))
|
|
( PARTITION part1 VALUES IN (NULL),
|
|
PARTITION part2 VALUES IN (0),
|
|
PARTITION part3 VALUES IN (1));
|
|
DROP TABLE t1;
|
|
--echo # 3.5.2.2 VALUE IN (NULL)
|
|
# Attention: It is intended that there is no partition with
|
|
# VALUES IN (0), because there was a time where NULL was treated as zero
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(MOD(f_int1,2))
|
|
( PARTITION part1 VALUES IN (NULL),
|
|
PARTITION part3 VALUES IN (1));
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
--echo # 3.5.3 Reveal that IN (...NULL) is not mapped to IN(0)
|
|
# Bug#15447: Partitions: NULL is treated as zero
|
|
# We would get a clash here if such a mapping would be done.
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(MOD(f_int1,2))
|
|
( PARTITION part1 VALUES IN (NULL),
|
|
PARTITION part2 VALUES IN (0),
|
|
PARTITION part3 VALUES IN (1));
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
|
|
# FIXME Implement some non integer constant tests
|
|
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 4. 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 #------------------------------------------------------------------------
|
|
--echo # 4.1 (positive) without partition/subpartition number assignment
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4.1.1 no partition number, no named partitions
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1);
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
--echo # 4.1.2 no partition number, named partitions
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) (PARTITION part1, PARTITION part2);
|
|
--source suite/parts/inc/partition_layout_check1.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 # 4.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 $part01= CREATE TABLE t1 ( ;
|
|
let $part02= )
|
|
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int1);
|
|
#
|
|
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_VALUE)';
|
|
let $part3_N= `SELECT @AUX`;
|
|
eval SET @aux = 'PARTITION part3 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart31 , SUBPARTITION subpart32 ))';
|
|
let $part3_Y= `SELECT @AUX`;
|
|
--enable_query_log
|
|
|
|
eval $part01 $column_list $part02 $part1_N $part2_N $part3_N ;
|
|
DROP TABLE t1;
|
|
# Bug#15407 Partitions: crash if subpartition
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_N $part2_N $part3_Y ;
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_N $part2_Y $part3_N ;
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_N $part2_Y $part3_Y ;
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_Y $part2_N $part3_N ;
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_Y $part2_N $part3_Y ;
|
|
--error ER_PARSE_ERROR
|
|
eval $part01 $column_list $part02 $part1_Y $part2_Y $part3_N ;
|
|
eval $part01 $column_list $part02 $part1_Y $part2_Y $part3_Y ;
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4.2 partition/subpartition numbers good and bad values and notations
|
|
--echo #------------------------------------------------------------------------
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
--echo # 4.2.1 partition/subpartition numbers INTEGER notation
|
|
# mleich: "positive/negative" is my private judgement. It need not to
|
|
# correspond with the server response.
|
|
# (positive) number = 2
|
|
let $part_number= 2;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (positive) special case number = 1
|
|
let $part_number= 1;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) 0 is non sense
|
|
let $part_number= 0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) -1 is non sense
|
|
let $part_number= -1;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) 1000000 is too huge
|
|
let $part_number= 1000000;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
--echo # 4.2.2 partition/subpartition numbers DECIMAL notation
|
|
# (positive) number = 2.0
|
|
let $part_number= 2.0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) -2.0 is non sense
|
|
let $part_number= -2.0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) case number = 0.0 is non sense
|
|
let $part_number= 0.0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# Bug#15890 Partitions: Strange interpretation of partition number
|
|
# (negative) number = 1.6 is non sense
|
|
let $part_number= 1.6;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) number is too huge
|
|
let $part_number= 999999999999999999999999999999.999999999999999999999999999999;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) number is nearly zero
|
|
let $part_number= 0.000000000000000000000000000001;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
--echo # 4.2.3 partition/subpartition numbers FLOAT notation
|
|
##### FLOAT notation
|
|
# (positive) number = 2.0E+0
|
|
let $part_number= 2.0E+0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# Bug#15890 Partitions: Strange interpretation of partition number
|
|
# (positive) number = 0.2E+1
|
|
let $part_number= 0.2E+1;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) -2.0E+0 is non sense
|
|
let $part_number= -2.0E+0;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# Bug#15890 Partitions: Strange interpretation of partition number
|
|
# (negative) 0.16E+1 is non sense
|
|
let $part_number= 0.16E+1;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) 0.0E+300 is zero
|
|
let $part_number= 0.0E+300;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# Bug#15890 Partitions: Strange interpretation of partition number
|
|
# (negative) 1E+300 is too huge
|
|
let $part_number= 1E+300;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) 1E-300 is nearly zero
|
|
let $part_number= 1E-300;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
--echo # 4.2.4 partition/subpartition numbers STRING notation
|
|
##### STRING notation
|
|
# (negative?) case number = '2'
|
|
let $part_number= '2';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative?) case number = '2.0'
|
|
let $part_number= '2.0';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative?) case number = '0.2E+1'
|
|
let $part_number= '0.2E+1';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) Strings starts with digit, but 'A' follows
|
|
let $part_number= '2A';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) Strings starts with 'A', but digit follows
|
|
let $part_number= 'A2';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) empty string
|
|
let $part_number= '';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) string without any digits
|
|
let $part_number= 'GARBAGE';
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
--echo # 4.2.5 partition/subpartition numbers other notations
|
|
# (negative) Strings starts with digit, but 'A' follows
|
|
let $part_number= 2A;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) Strings starts with 'A', but digit follows
|
|
let $part_number= A2;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) string without any digits
|
|
let $part_number= GARBAGE;
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
# (negative?) double quotes
|
|
let $part_number= "2";
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) Strings starts with digit, but 'A' follows
|
|
let $part_number= "2A";
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) Strings starts with 'A', but digit follows
|
|
let $part_number= "A2";
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
# (negative) string without any digits
|
|
let $part_number= "GARBAGE";
|
|
--source suite/parts/inc/partition_syntax_1.inc
|
|
|
|
--echo # 4.2.6 (negative) partition/subpartition numbers per @variables
|
|
SET @aux = 5;
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) PARTITIONS @aux;
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int1)
|
|
SUBPARTITIONS @aux = 5
|
|
(PARTITION part1 VALUES LESS THAN ($max_row_div2),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE);
|
|
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4.3 Mixups of assigned partition/subpartition numbers and names
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 4.3.1 (positive) number of partition/subpartition
|
|
--echo # = number of named partition/subpartition
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) PARTITIONS 2 ( PARTITION part1, PARTITION part2 ) ;
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1) PARTITIONS 2
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
|
);
|
|
--source suite/parts/inc/partition_layout_check1.inc
|
|
DROP TABLE t1;
|
|
--echo # 4.3.2 (positive) number of partition/subpartition ,
|
|
--echo # 0 (= no) named partition/subpartition
|
|
--echo # already checked above
|
|
--echo # 4.3.3 (negative) number of partitions/subpartitions
|
|
--echo # > number of named partitions/subpartitions
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) PARTITIONS 2 ( PARTITION part1 ) ;
|
|
# Wrong number of named subpartitions in first partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11 ),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
|
);
|
|
# Wrong number of named subpartitions in non first/non last partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1) 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 $MAX_VALUE
|
|
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
|
);
|
|
# Wrong number of named subpartitions in last partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1) PARTITIONS 2
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart21 )
|
|
);
|
|
--echo # 4.3.4 (negative) number of partitions < number of named partitions
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) PARTITIONS 1 ( PARTITION part1, PARTITION part2 ) ;
|
|
# Wrong number of named subpartitions in first partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 1
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
|
);
|
|
# Wrong number of named subpartitions in non first/non last partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1) 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 $MAX_VALUE
|
|
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
|
);
|
|
# Wrong number of named subpartitions in last partition
|
|
--error ER_PARSE_ERROR
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 1
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
|
PARTITION part2 VALUES LESS THAN $MAX_VALUE
|
|
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
|
);
|
|
|
|
|
|
--echo
|
|
--echo #========================================================================
|
|
--echo # 5. Checks of logical partition/subpartition name
|
|
--echo # file name clashes during CREATE TABLE
|
|
--echo #========================================================================
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 5.1 (negative) A partition/subpartition name used more than once
|
|
--echo #------------------------------------------------------------------------
|
|
--echo # 5.1.1 duplicate partition name
|
|
--error ER_SAME_NAME_PARTITION
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(f_int1) (PARTITION part1, PARTITION part1);
|
|
#
|
|
--echo # 5.1.2 duplicate subpartition name
|
|
# Bug#15408 Partitions: subpartition names are not unique
|
|
--error ER_SAME_NAME_PARTITION
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(f_int1)
|
|
SUBPARTITION BY HASH(f_int1)
|
|
( PARTITION part1 VALUES LESS THAN (1000)
|
|
(SUBPARTITION subpart11, SUBPARTITION subpart11)
|
|
);
|
|
|
|
# FIXME Implement testcases with filename problems
|
|
# existing file of other table --- partition/subpartition file name
|
|
# partition/subpartition file name --- file of the same table
|
|
|