Fixes for the following bugs:

Bug #30316: Some "parts" tests fail because the server uses "--secure-file-priv"
Bug #30341: Test suite "parts" needs to be adapted to the new rules disallowing many functio
Bug #30408: Suite "parts" needs bug numbers updated
Bug #30411: Suite "parts" needs bug numbers updated: ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
Bug #30576: part_supported_sql_func_innodb.test tries to LOAD DATA outside of var dir
Bug #30581: partition_value tests use disallowed CAST() function

Included are some general fixes to allow the "parts" test suite to be run
successfully.  This includes disabling a few tests or parts of tests,
cleaning up the test cases and their results, etc.  Basically, these tests
have not been run for some time, and had suffered some bit rot.

The bugs were fixed as a single changeset, because in some ways they depend
on each other.  I couldn't be sure I'd updated all the error codes (for
bugs 30408 and 30411) without also adapting to the new allowed functions
rules (bug 30341), and vice versa.
parent 549ed886
......@@ -9,5 +9,6 @@ eval SHOW CREATE TABLE t1;
# listing of files belonging to the table t1
if ($ls)
{
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec ls $MYSQLTEST_VARDIR/master-data/test/t1*
}
......@@ -17,6 +17,18 @@
--echo --- All SQL functions should be rejected, otherwise BUG (see 18198)
--echo -------------------------------------------------------------------------
let $sqlfunc = ascii(col1);
let $valsqlfunc = ascii('a');
let $coltype = char(30);
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = ord(col1);
let $valsqlfunc = ord('a');
let $coltype = char(30);
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = greatest(col1,15);
let $valsqlfunc = greatest(1,15);
let $coltype = int;
......@@ -151,12 +163,6 @@ let $coltype = int;
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = datediff(col1,col1);
let $valsqlfunc = datediff('1997-11-30 23:59:59','1997-12-31');
let $coltype = datetime;
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = period_add(col1,5);
let $valsqlfunc = period_add(9804,5);
let $coltype = datetime;
......@@ -190,6 +196,12 @@ let $coltype = datetime;
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = weekofyear(col1);
let $valsqlfunc = weekofyear('2002-05-01');
let $coltype = datetime;
--source suite/parts/inc/partition_blocked_sql_funcs.inc
# --source include/partition_blocked_sql_funcs.inc
let $sqlfunc = cast(col1 as signed);
let $valsqlfunc = cast(123 as signed);
let $coltype = varchar(30);
......
......@@ -40,61 +40,42 @@ let $val4 = 15 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = ascii(col1);
let $valsqlfunc = ascii('5');
let $coltype = char(1);
let $infile = part_supported_sql_funcs_int_ch1.inc;
let $val1 = '1';
let $val2 = '9';
let $val3 = '3';
let $val4 = '8';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = cast(ceiling(col1) as signed integer);
let $valsqlfunc = cast(ceiling(15) as signed integer);
let $sqlfunc = ceiling(col1);
let $valsqlfunc = ceiling(15);
let $coltype = float(7,4);
let $infile = part_supported_sql_funcs_int_float.inc;
let $val1 = 5.1230;
let $val2 = 13.345;
let $val3 = 17.987;
let $val4 = 15.654 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc
# DISABLED due to bug 30577
#--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = cast(floor(col1) as signed);
let $valsqlfunc = cast(floor(15.123) as signed);
let $sqlfunc = floor(col1);
let $valsqlfunc = floor(15.123);
let $coltype = float(7,4);
let $infile = part_supported_sql_funcs_int_float.inc;
let $val1 = 5.1230;
let $val2 = 13.345;
let $val3 = 17.987;
let $val4 = 15.654 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc
# DISABLED due to bug 30577
#--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = cast(mod(col1,10) as signed);
let $valsqlfunc = cast(mod(15,10) as signed);
let $coltype = float(7,4);
let $infile = part_supported_sql_funcs_int_float.inc;
let $val1 = 5.0000;
let $sqlfunc = mod(col1,10);
let $valsqlfunc = mod(15,10);
let $coltype = int;
let $infile = part_supported_sql_funcs_int_int.inc;
let $val1 = 5;
let $val2 = 19;
let $val3 = 17;
let $val4 = 15 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = ord(col1);
let $valsqlfunc = ord('a');
let $coltype = char(3);
let $infile = part_supported_sql_funcs_int_ch1.inc;
let $val1 = '1';
let $val2 = '9';
let $val3 = '3';
let $val4 = '8';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = day(col1);
let $valsqlfunc = day('2006-12-21');
let $coltype = date;
......@@ -243,25 +224,26 @@ let $val4 = '2006-02-06';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = weekday(col1);
let $valsqlfunc = weekday('2006-10-14');
# DATEDIFF() is implemented as (TO_DAYS(d1) - TO_DAYS(d2))
let $sqlfunc = datediff(col1, '2006-01-01');
let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 = '2006-12-03';
let $val2 = '2006-11-17';
let $val3 = '2006-05-25';
let $val1 = '2006-02-03';
let $val2 = '2006-01-17';
let $val3 = '2006-01-25';
let $val4 = '2006-02-06';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
let $sqlfunc = weekofyear(col1);
let $valsqlfunc = weekofyear('2006-02-14');
let $sqlfunc = weekday(col1);
let $valsqlfunc = weekday('2006-10-14');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 = '2006-01-03';
let $val2 = '2006-03-17';
let $val1 = '2006-12-03';
let $val2 = '2006-11-17';
let $val3 = '2006-05-25';
let $val4 = '2006-09-06';
let $val4 = '2006-02-06';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# --source include/partition_supported_sql_funcs.inc
......
......@@ -43,16 +43,16 @@ SELECT IF(9999 - 1000 + 1 > @max_row, @max_row , 9999 - 1000 + 1)
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
#
--echo # 1.1.2 Assign HASH partitioning
ALTER TABLE t1 PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER));
ALTER TABLE t1 PARTITION BY HASH(YEAR(f_date));
--source include/partition_layout.inc
--source suite/parts/inc/partition_check_read1.inc
#
--echo # 1.1.3 Assign other HASH partitioning to already partitioned table
--echo # + test and switch back + test
ALTER TABLE t1 PARTITION BY HASH(CAST(f_varchar AS SIGNED INTEGER));
ALTER TABLE t1 PARTITION BY HASH(DAYOFYEAR(f_date));
--source include/partition_layout.inc
--source suite/parts/inc/partition_check_read1.inc
ALTER TABLE t1 PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER));
ALTER TABLE t1 PARTITION BY HASH(YEAR(f_date));
--source include/partition_layout.inc
--source suite/parts/inc/partition_check_read1.inc
#
......
......@@ -36,8 +36,9 @@
eval $insert_first_half;
# Possible/Expected return codes for ALTER TABLE ...
# 0
# 1491: A PRIMARY KEY need to include all fields in the partition function
# A UNIQUE INDEX need to include all fields in the partition function
# 1030: ER_GET_ERRNO
# 1500: ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
# 1504: ER_DROP_PARTITION_NON_EXISTENT
--disable_abort_on_error
eval $alter;
--enable_abort_on_error
......@@ -47,11 +48,11 @@ if ($no_debug)
}
eval SET @my_errno = $mysql_errno;
let $run_test= `SELECT @my_errno = 0`;
let $unexpected_error= `SELECT @my_errno NOT IN (0,1030,1491,1495)`;
let $unexpected_error= `SELECT @my_errno NOT IN (0,1030,1500,1504)`;
if ($unexpected_error)
{
--echo # The last command got an unexepected error response.
--echo # Expected/handled SQL codes are 0,1030,1491,1495
--echo # Expected/handled SQL codes are 0,1030,1500,1504
SELECT '# SQL code we got was: ' AS "", @my_errno AS "";
--echo # Sorry, have to abort.
exit;
......
......@@ -15,8 +15,7 @@
--echo -------------------------------------------------------------------------
--echo --- $sqlfunc in partition with coltype $coltype
--echo -------------------------------------------------------------------------
--echo must all fail! (delete 0 and comment char, if bug fixed)
--disable_abort_on_error
--echo must all fail!
--disable_warnings
drop table if exists t1 ;
drop table if exists t2 ;
......@@ -26,32 +25,31 @@ drop table if exists t5 ;
drop table if exists t6 ;
--enable_warnings
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t1 (col1 $coltype) engine=$engine
partition by range($sqlfunc)
(partition p0 values less than (15),
partition p1 values less than (31));
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t2 (col1 $coltype) engine=$engine
partition by list($sqlfunc)
(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
partition p1 values in (11,12,13,14,15,16,17,18,19,20),
partition p2 values in (21,22,23,24,25,26,27,28,29,30));
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t3 (col1 $coltype) engine=$engine
partition by hash($sqlfunc);
--enable_abort_on_error
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t4 (colint int, col1 $coltype) engine=$engine
partition by range(colint)
subpartition by hash($sqlfunc) subpartitions 2
(partition p0 values less than (15),
partition p1 values less than (31));
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t5 (colint int, col1 $coltype) engine=$engine
partition by list(colint)
subpartition by hash($sqlfunc) subpartitions 2
......@@ -59,7 +57,7 @@ subpartition by hash($sqlfunc) subpartitions 2
partition p1 values in (11,12,13,14,15,16,17,18,19,20),
partition p2 values in (21,22,23,24,25,26,27,28,29,30));
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t6 (colint int, col1 $coltype) engine=$engine
partition by range(colint)
(partition p0 values less than ($valsqlfunc),
......@@ -75,50 +73,44 @@ drop table if exists t55 ;
drop table if exists t66 ;
--enable_warnings
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t11 (col1 $coltype) engine=$engine ;
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t22 (col1 $coltype) engine=$engine ;
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t33 (col1 $coltype) engine=$engine ;
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t44 (colint int, col1 $coltype) engine=$engine ;
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t55 (colint int, col1 $coltype) engine=$engine ;
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval create table t66 (colint int, col1 $coltype) engine=$engine ;
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t11
partition by range($sqlfunc)
(partition p0 values less than (15),
partition p1 values less than (31));
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t22
partition by list($sqlfunc)
(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
partition p1 values in (11,12,13,14,15,16,17,18,19,20),
partition p2 values in (21,22,23,24,25,26,27,28,29,30));
#--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t33
partition by hash($sqlfunc);
--enable_abort_on_error
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t44
partition by range(colint)
subpartition by hash($sqlfunc) subpartitions 2
(partition p0 values less than (15),
partition p1 values less than (31));
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t55
partition by list(colint)
subpartition by hash($sqlfunc) subpartitions 2
......@@ -126,7 +118,7 @@ subpartition by hash($sqlfunc) subpartitions 2
partition p1 values in (11,12,13,14,15,16,17,18,19,20),
partition p2 values in (21,22,23,24,25,26,27,28,29,30));
--error 0,ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED,ER_PARSE_ERROR
eval alter table t66
partition by range(colint)
(partition p0 values less than ($valsqlfunc),
......
......@@ -156,8 +156,8 @@ if ($run)
# partitioning mechanism.
# Sideeffect: Attempt to INSERT one record
# DUPLICATE KEY will appear if we have UNIQUE columns
# 1022: Can't write; duplicate key in table 't1' UIDX/PK(f_int1)
# 1062: Duplicate entry '2' for key 1 UIDX/PK(f_int2)
# 1022: ER_DUP_KEY
# 1062: ER_DUP_ENTRY
--disable_abort_on_error
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
......@@ -200,7 +200,8 @@ if ($any_unique)
## 1.3.1 Check, if f_int1 is UNIQUE
# Sideeffect: Attempt to INSERT one record
# DUPLICATE KEY will appear if we have UNIQUE columns
# 1022: Can't write; duplicate key in table 't1' UIDX/PK
# 1022: ER_DUP_KEY
# 1062: ER_DUP_ENTRY
--disable_abort_on_error
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
......@@ -494,8 +495,9 @@ WHERE f_charbig = '#SINGLE#' AND f_int1 IN (-1,@cur_value);
# 4.7 Insert one record with such a big value for f_int1, so that in case
# - f_int1 is used within the partitioning algorithm
# - we use range partitioning
# we get error ER_NO_PARTITION_FOR_GIVEN_VALUE (1514)
# we get error ER_NO_PARTITION_FOR_GIVEN_VALUE (1523)
# "Table has no partition for value ...."
# or ER_SAME_NAME_PARTITION (1514)
--disable_abort_on_error
eval INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#$max_int_4##';
--enable_abort_on_error
......@@ -504,11 +506,11 @@ if ($no_debug)
--disable_query_log
}
eval SET @my_errno = $mysql_errno;
let $unexpected_error= `SELECT @my_errno NOT IN (0,1505,1514)`;
let $unexpected_error= `SELECT @my_errno NOT IN (0,1514,1523)`;
if ($unexpected_error)
{
--echo # The last command got an unexepected error response.
--echo # Expected/handled SQL codes are 0,1514
--echo # Expected/handled SQL codes are 0,1514,1523
SELECT '# SQL code we got was: ' AS "", @my_errno AS "";
--echo # Sorry, have to abort.
exit;
......@@ -555,8 +557,8 @@ INSERT t1 SET f_int1 = 0 , f_int2 = 0,
# f1 "=" NULL is a delicate value which might stress the partitioning
# mechanism if the result of the expression in the partitioning algorithm
# becomes NULL.
# Not: This INSERT will fail, if f_int1 is PRIMARY KEY or UNIQUE INDEX
# 1048: Column 'f_int1' cannot be null
# This INSERT will fail, if f_int1 is PRIMARY KEY or UNIQUE INDEX
# 1048: ER_BAD_NULL_ERROR
--disable_abort_on_error
INSERT INTO t1
......
......@@ -49,7 +49,7 @@ select * from t2;
drop table t2;
eval create table t3 (a date not null, primary key(a)) engine=$engine
partition by range (cast(month(a) as unsigned)) subpartition by key (a)
partition by range (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values less than (4),
partition quarter2 values less than (7),
......@@ -69,7 +69,7 @@ select * from t3;
drop table t3;
eval create table t4 (a date not null, primary key(a)) engine=$engine
partition by list (cast(month(a) as unsigned)) subpartition by key (a)
partition by list (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values in (1,2,3),
partition quarter2 values in (4,5,6),
......
......@@ -46,7 +46,7 @@ select * from t2;
drop table t2;
eval create table t3 (a datetime not null, primary key(a)) engine=$engine
partition by range (cast(month(a) as unsigned)) subpartition by key (a)
partition by range (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values less than (4),
partition quarter2 values less than (7),
......@@ -66,7 +66,7 @@ select * from t3;
drop table t3;
eval create table t4 (a datetime not null, primary key(a)) engine=$engine
partition by list (cast(month(a) as unsigned)) subpartition by key (a)
partition by list (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values in (1,2,3),
partition quarter2 values in (4,5,6),
......
......@@ -47,8 +47,15 @@ dec $count;
select count(*) from t2;
drop table t2;
# Bug 30577: FLOOR() and CEILING() not usable as partition functions
# Partition functions are required to return INT_RESULT; FLOOR() and
# CEILING() do not, unless they have an INT argument. Disable this
# portion of the test until bug 30577 is fixed.
--disable_parsing
eval create table t3 (a decimal(18,9) not null, primary key(a)) engine=$engine
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition by range (floor(a)) subpartition by key (a) subpartitions 2 (
partition pa2 values less than (2),
partition pa4 values less than (4),
partition pa6 values less than (6),
......@@ -70,7 +77,7 @@ select count(*) from t3;
drop table t3;
eval create table t4 (a decimal(18,9) not null, primary key(a)) engine=$engine
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition by list (floor(a)) subpartition by key (a) subpartitions 2 (
partition pa2 values in (1,2),
partition pa4 values in (3,4),
partition pa6 values in (5,6),
......@@ -90,3 +97,6 @@ dec $count;
--enable_query_log
select count(*) from t4;
drop table t4;
# Disabled due to Bug 30577
--enable_parsing
......@@ -29,9 +29,9 @@ let $partitioning= ;
if ($with_partitioning)
{
let $partitioning= PARTITION BY HASH(f_int1) PARTITIONS 2;
--disable_query_log
if ($with_directories)
{
--disable_query_log
eval SET @aux =
'PARTITION BY HASH(f_int1) PARTITIONS 2
(PARTITION p1
......@@ -39,7 +39,6 @@ $index_directory,
PARTITION p2
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
}
eval CREATE TABLE t1 (
......@@ -47,6 +46,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -54,9 +54,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY KEY
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY KEY(f_int1) PARTITIONS 5';
let $partitioning= `SELECT @aux`;
......@@ -76,7 +76,6 @@ PARTITION p4,
PARTITION p5
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
}
eval CREATE TABLE t1 (
......@@ -84,6 +83,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -91,9 +91,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY LIST
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY LIST(MOD(f_int1,4))
(PARTITION part_3 VALUES IN (-3)
......@@ -119,6 +119,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -126,9 +127,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE
--disable_query_log
if ($with_partitioning)
{
#--disable_query_log
eval SET @aux = 'PARTITION BY RANGE(f_int1)
(PARTITION parta VALUES LESS THAN (0)
$index_directory,
......@@ -143,13 +144,13 @@ $data_directory,
PARTITION partf VALUES LESS THAN $MAX_VALUE
$index_directory)';
let $partitioning= `SELECT @aux`;
#--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -157,9 +158,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE -- SUBPARTITION BY HASH
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
(PARTITION parta VALUES LESS THAN (0)
......@@ -171,13 +172,13 @@ PARTITION partd VALUES LESS THAN $MAX_VALUE
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -185,9 +186,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux = 'PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
(PARTITION part1 VALUES LESS THAN (0)
$data_directory
......@@ -202,13 +203,13 @@ $index_directory
PARTITION part4 VALUES LESS THAN $MAX_VALUE
(SUBPARTITION subpart41, SUBPARTITION subpart42))';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -216,9 +217,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY LIST -- SUBPARTITION BY HASH
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
(PARTITION part1 VALUES IN (0)
......@@ -246,13 +247,13 @@ eval SET @aux =
$data_directory
$index_directory))';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......
......@@ -48,8 +48,15 @@ select count(*) from t2;
drop table t2;
# Bug 30577: FLOOR() and CEILING() not usable as partition functions
# Partition functions are required to return INT_RESULT; FLOOR() and
# CEILING() do not, unless they have an INT argument. Disable this
# portion of the test until bug 30577 is fixed.
--disable_parsing
eval create table t3 (a double not null, primary key(a)) engine=$engine
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition by range (floor(a)) subpartition by key (a) subpartitions 3 (
partition pa1 values less than (3),
partition pa3 values less than (6),
partition pa10 values less than (10)
......@@ -69,7 +76,7 @@ select * from t3;
drop table t3;
eval create table t4 (a double not null, primary key(a)) engine=$engine
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition by list (floor(a)) subpartition by key (a) subpartitions 3 (
partition pa1 values in (1,2,3),
partition pa3 values in (4,5,6),
partition pa10 values in (7,8,9,10)
......@@ -87,3 +94,6 @@ dec $count;
select count(*) from t4;
select * from t4;
drop table t4;
# Disabled due to Bug 30577
--enable_parsing
......@@ -53,7 +53,7 @@ eval create table t3 (a enum (
'M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z'
) not null, primary key(a)) engine=$engine
partition by range (cast(a as unsigned)) subpartition by key (a) subpartitions 3 (
partition by range (a) subpartition by key (a) subpartitions 3 (
partition pa9 values less than (10),
partition pa18 values less than (19),
partition pa27 values less than (28),
......@@ -72,28 +72,3 @@ select count(*) from t3;
select * from t3;
drop table t3;
eval create table t4 (a enum (
'1','2','3','4','5','6','7','8','9','0',
'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z'
) not null, primary key(a)) engine=$engine
partition by list (cast(a as unsigned)) subpartition by key (a) subpartitions 3 (
partition pa9 values in (1,2,3,4,5,6,7,8,9),
partition pa18 values in (10,11,12,13,14,15,16,17,18),
partition pa27 values in (19,20,21,22,23,24,25,26,27),
partition pa36 values in (28,29,30,31,32,33,34,35,36)
);
show create table t4;
let $letter=36;
--echo $count inserts;
#--disable_query_log
while ($letter)
{
#eval insert into t4 values ($letter);
dec $letter;
}
select count(*) from t4;
select * from t4;
drop table t4;
......@@ -51,8 +51,15 @@ dec $count;
select count(*) from t2;
drop table t2;
# Bug 30577: FLOOR() and CEILING() not usable as partition functions
# Partition functions are required to return INT_RESULT; FLOOR() and
# CEILING() do not, unless they have an INT argument. Disable this
# portion of the test until bug 30577 is fixed.
--disable_parsing
eval create table t3 (a float not null, primary key(a)) engine=$engine
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition by range (floor(a)) subpartition by key (a) subpartitions 3 (
partition pa1 values less than (3),
partition pa3 values less than (6),
partition pa10 values less than (10)
......@@ -72,7 +79,7 @@ select * from t3;
drop table t3;
eval create table t4 (a float not null, primary key(a)) engine=$engine
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition by list (floor(a)) subpartition by key (a) subpartitions 3 (
partition pa1 values in (1,2,3),
partition pa3 values in (4,5,6),
partition pa10 values in (7,8,9,10)
......@@ -90,3 +97,6 @@ dec $count;
select count(*) from t4;
select * from t4;
drop table t4;
# Disabled due to Bug 30577
--enable_parsing
......@@ -56,6 +56,7 @@ eval INSERT INTO t0_definition SET state = 'old',
file_list = $file_list;
# Print the create table statement into the protocol
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
SELECT create_command FROM t0_definition WHERE state = 'old';
if ($do_file_tests)
{
......
......@@ -55,6 +55,7 @@ let $run= `SELECT @aux`;
if ($run)
{
--vertical_results
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
SELECT state,
REPLACE(create_command,'\n',' ') AS "Table definition",
REPLACE(file_list ,'\n',' ') AS "File list"
......
......@@ -44,9 +44,9 @@ let $partitioning= ;
if ($with_partitioning)
{
let $partitioning= PARTITION BY HASH(f_int1) PARTITIONS 2;
--disable_query_log
if ($with_directories)
{
--disable_query_log
eval SET @aux =
'PARTITION BY HASH(f_int1) PARTITIONS 2
(PARTITION p1
......@@ -56,7 +56,6 @@ PARTITION p2
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
}
eval CREATE TABLE t1 (
......@@ -64,6 +63,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -71,15 +71,14 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY KEY
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY KEY(f_int1) PARTITIONS 5';
let $partitioning= `SELECT @aux`;
if ($with_directories)
{
--disable_query_log
eval SET @aux =
'PARTITION BY HASH(f_int1) PARTITIONS 5
(PARTITION p1
......@@ -98,7 +97,6 @@ PARTITION p5
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
}
eval CREATE TABLE t1 (
......@@ -106,6 +104,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -113,9 +112,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY LIST
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY LIST(MOD(f_int1,4))
(PARTITION part_3 VALUES IN (-3)
......@@ -141,6 +140,7 @@ $column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -148,9 +148,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE
--disable_query_log
if ($with_partitioning)
{
#--disable_query_log
eval SET @aux = 'PARTITION BY RANGE(f_int1)
(PARTITION parta VALUES LESS THAN (0)
$data_directory
......@@ -171,13 +171,13 @@ PARTITION partf VALUES LESS THAN $MAX_VALUE
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
#--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -185,9 +185,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE -- SUBPARTITION BY HASH
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
(PARTITION parta VALUES LESS THAN (0)
......@@ -203,13 +203,13 @@ PARTITION partd VALUES LESS THAN $MAX_VALUE
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -217,9 +217,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux = 'PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
(PARTITION part1 VALUES LESS THAN (0)
$data_directory
......@@ -238,13 +238,13 @@ $data_directory
$index_directory
(SUBPARTITION subpart41, SUBPARTITION subpart42))';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -252,9 +252,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY LIST -- SUBPARTITION BY HASH
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
(PARTITION part1 VALUES IN (0)
......@@ -290,13 +290,13 @@ eval SET @aux =
$data_directory
$index_directory))';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......@@ -304,9 +304,9 @@ DROP TABLE t1;
--source suite/parts/inc/partition_check_drop.inc
#----------- PARTITION BY LIST -- SUBPARTITION BY KEY
--disable_query_log
if ($with_partitioning)
{
--disable_query_log
eval SET @aux =
'PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS $sub_part_no
......@@ -320,13 +320,13 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS $sub_part_no
$data_directory
$index_directory)';
let $partitioning= `SELECT @aux`;
--enable_query_log
}
eval CREATE TABLE t1 (
$column_list
$unique
)
$partitioning;
--enable_query_log
eval $insert_all;
--source suite/parts/inc/partition_check.inc
# --source include/partition_check.inc
......
......@@ -43,41 +43,3 @@ insert into t2 values ('1,2,3'),('2,3,4'),('3,4,5'),('4,5,6'),('5,6,7'),('6,7,8'
select count(*) from t2;
select * from t2 order by a;
drop table t2;
eval create table t3 (a set (
'1','2','3','4','5','6','7','8','9','0'
) not null, primary key(a)) engine=$engine
partition by range (cast(a as unsigned)) subpartition by key (a) subpartitions 3 (
partition pa9 values less than (10),
partition pa18 values less than (19),
partition pa27 values less than (28),
partition pa36 values less than (37),
partition pa64 values less than (65),
partition pa128 values less than (129),
partition pa256 values less than (257),
partition pa512 values less than (513),
partition pa768 values less than (769),
partition pa1024 values less than (1025)
);
show create table t3;
#insert into t3 values ('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('0');
#insert into t3 values ('1,2'),('2,3'),('3,4'),('4,5'),('5,6'),('6,7'),('7,8'),('8,9'),('9,0'),('0,1');
#insert into t3 values ('1,2,3'),('2,3,4'),('3,4,5'),('4,5,6'),('5,6,7'),('6,7,8'),('7,8,9'),('8,9,0'),('9,0,1'),('0,1,2');
select count(*) from t3;
select * from t3 order by a;
drop table t3;
eval create table t4 (a set (
'1','2','3') not null, primary key(a)) engine=$engine
partition by list (cast(a as unsigned)) subpartition by key (a) subpartitions 3 (
partition pa9 values in (1,2,3,4,5,6,7,8,9),
partition pa18 values in (10,11,12,13,14,15,16,17,18),
partition pa27 values in (19,20,21,22,23,24,25,26,27)
);
show create table t4;
#insert into t4 values ('1'),('2'),('3');
#insert into t4 values ('1,2'),('2,3'),('3,1');
#insert into t4 values ('1,2,3');
select count(*) from t4;
select * from t4 order by a;
drop table t4;
......@@ -83,14 +83,9 @@ eval insert into t3 values ($val1);
eval insert into t3 values ($val2);
eval insert into t3 values ($val3);
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval load data infile '$MYSQL_TEST_DIR/suite/parts/inc/$infile' into table t4;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval load data infile '$MYSQL_TEST_DIR/suite/parts/inc/$infile' into table t5;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval load data infile '$MYSQL_TEST_DIR/suite/parts/inc/$infile' into table t6;
eval load data infile '../std_data_ln/parts/$infile' into table t4;
eval load data infile '../std_data_ln/parts/$infile' into table t5;
eval load data infile '../std_data_ln/parts/$infile' into table t6;
eval select $sqlfunc from t1 order by col1;
......
......@@ -331,13 +331,13 @@ $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 (CAST(NULL AS SIGNED INTEGER)) is not allowed
--echo # 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
--error 1064
eval CREATE TABLE t1 (
$column_list
)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (CAST(NULL AS SIGNED INTEGER)),
( 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)
......@@ -349,14 +349,14 @@ PARTITION BY LIST(MOD(f_int1,2))
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
DROP TABLE t1;
--echo # 3.5.2.2 VALUE IN (CAST(NULL AS SIGNED INTEGER))
--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 (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part3 VALUES IN (1));
--source suite/parts/inc/partition_layout_check1.inc
# --source include/partition_layout_check1.inc
......@@ -368,7 +368,7 @@ eval CREATE TABLE t1 (
$column_list
)
PARTITION BY LIST(MOD(f_int1,2))
( PARTITION part1 VALUES IN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
--source suite/parts/inc/partition_layout_check1.inc
......
......@@ -28,15 +28,15 @@ eval SET @my_errno= $mysql_errno ;
let $run= `SELECT @my_errno = 0`;
# Expected error codes are
# 0
# 1064 ERROR 42000: You have an error in your SQL syntax
# Reason: assign -1 partitions
# 1486 ERROR HY000: Too many partitions (including subpartitions) were defined
# 1491 ERROR HY000: Number of partitions = 0 is not an allowed value
let $unexpected_error= `SELECT @my_errno NOT IN (0,1064,1487,1492)`;
# 1064 ER_PARSE_ERROR
# Reason: assign -1 partitions
# 1496 ER_TOO_MANY_PARTITIONS_ERROR
# 1501 ER_NO_PARTS_ERROR
let $unexpected_error= `SELECT @my_errno NOT IN (0,1064,1496,1501)`;
if ($unexpected_error)
{
--echo # The last command got an unexepected error response.
--echo # Expected/handled SQL codes are 0,1064,1487,1492
--echo # Expected/handled SQL codes are 0,1064,1496,1501
SELECT '# SQL code we got was: ' AS "", @my_errno AS "";
--echo # Sorry, have to abort.
exit;
......@@ -66,15 +66,15 @@ eval SET @my_errno= $mysql_errno ;
let $run= `SELECT @my_errno = 0`;
# Expected error codes are
# 0
# 1064 ERROR 42000: You have an error in your SQL syntax
# Reason: assign -1 subpartitions
# 1487 ERROR HY000: Too many partitions (including subpartitions) were defined
# 1492 ERROR HY000: Number of partitions = 0 is not an allowed value
let $unexpected_error= `SELECT @my_errno NOT IN (0,1064,1487,1492)`;
# 1064 ER_PARSE_ERROR
# Reason: assign -1 partitions
# 1496 ER_TOO_MANY_PARTITIONS_ERROR
# 1501 ER_NO_PARTS_ERROR
let $unexpected_error= `SELECT @my_errno NOT IN (0,1064,1496,1501)`;
if ($unexpected_error)
{
--echo # The last command got an unexepected error response.
--echo # Expected/handled SQL codes are 0,1064,1487,1492
--echo # Expected/handled SQL codes are 0,1064,1496,1501
SELECT '# SQL code we got was: ' AS "", @my_errno AS "";
--echo # Sorry, have to abort.
exit;
......
......@@ -46,7 +46,7 @@ select * from t2;
drop table t2;
eval create table t3 (a time not null, primary key(a)) engine=$engine
partition by range (cast(second(a) as unsigned)) subpartition by key (a)
partition by range (second(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values less than (16),
partition quarter2 values less than (31),
......@@ -66,7 +66,7 @@ select * from t3;
drop table t3;
eval create table t4 (a time not null, primary key(a)) engine=$engine
partition by list (cast(second(a) as unsigned)) subpartition by key (a)
partition by list (second(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),
partition quarter2 values in (16,17,18,19,20,21,22,23,24,25,26,27,28,29,30),
......
......@@ -46,7 +46,7 @@ select * from t2;
drop table t2;
eval create table t3 (a timestamp not null, primary key(a)) engine=$engine
partition by range (cast(month(a) as unsigned)) subpartition by key (a)
partition by range (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values less than (4),
partition quarter2 values less than (7),
......@@ -66,7 +66,7 @@ select * from t3;
drop table t3;
eval create table t4 (a timestamp not null, primary key(a)) engine=$engine
partition by list (cast(month(a) as unsigned)) subpartition by key (a)
partition by list (month(a)) subpartition by key (a)
subpartitions 3 (
partition quarter1 values in (0,1,2,3),
partition quarter2 values in (4,5,6),
......
......@@ -12,6 +12,16 @@
# Change: #
################################################################################
--echo
--echo This test relies on the CAST() function for partitioning, which
--echo is not allowed. Not deleting it yet, as it may have some useful
--echo bits in it. See Bug #30581, "partition_value tests use disallowed
--echo CAST() function"
--echo
--disable_parsing
--echo
--echo #========================================================================
--echo # Calculation of "exotic" results within the partition function
......@@ -155,3 +165,5 @@ VALUES(NULL,NULL,NULL,NULL,NULL);
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 IS NULL;
DROP TABLE t1;
#
--enable_parsing
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -87,95 +87,3 @@ select count(*) from t2;
count(*)
3072
drop table t2;
create table t3 (a decimal(18,9) not null, primary key(a)) engine='InnoDB'
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition pa2 values less than (2),
partition pa4 values less than (4),
partition pa6 values less than (6),
partition pa8 values less than (8),
partition pa10 values less than (10)
);
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` decimal(18,9) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 2 (PARTITION pa2 VALUES LESS THAN (2) ENGINE = InnoDB, PARTITION pa4 VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION pa6 VALUES LESS THAN (6) ENGINE = InnoDB, PARTITION pa8 VALUES LESS THAN (8) ENGINE = InnoDB, PARTITION pa10 VALUES LESS THAN (10) ENGINE = InnoDB) */
9*3 inserts;
insert into t3 values (9);
insert into t3 values (9+0.333333333);
insert into t3 values (9+0.755555555);
insert into t3 values (8);
insert into t3 values (8+0.333333333);
insert into t3 values (8+0.755555555);
insert into t3 values (7);
insert into t3 values (7+0.333333333);
insert into t3 values (7+0.755555555);
insert into t3 values (6);
insert into t3 values (6+0.333333333);
insert into t3 values (6+0.755555555);
insert into t3 values (5);
insert into t3 values (5+0.333333333);
insert into t3 values (5+0.755555555);
insert into t3 values (4);
insert into t3 values (4+0.333333333);
insert into t3 values (4+0.755555555);
insert into t3 values (3);
insert into t3 values (3+0.333333333);
insert into t3 values (3+0.755555555);
insert into t3 values (2);
insert into t3 values (2+0.333333333);
insert into t3 values (2+0.755555555);
insert into t3 values (1);
insert into t3 values (1+0.333333333);
insert into t3 values (1+0.755555555);
select count(*) from t3;
count(*)
27
drop table t3;
create table t4 (a decimal(18,9) not null, primary key(a)) engine='InnoDB'
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition pa2 values in (1,2),
partition pa4 values in (3,4),
partition pa6 values in (5,6),
partition pa8 values in (7,8),
partition pa10 values in (9,10)
);
show create table t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` decimal(18,9) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 2 (PARTITION pa2 VALUES IN (1,2) ENGINE = InnoDB, PARTITION pa4 VALUES IN (3,4) ENGINE = InnoDB, PARTITION pa6 VALUES IN (5,6) ENGINE = InnoDB, PARTITION pa8 VALUES IN (7,8) ENGINE = InnoDB, PARTITION pa10 VALUES IN (9,10) ENGINE = InnoDB) */
9*3 inserts;
insert into t4 values (9);
insert into t4 values (9+0.333333333);
insert into t4 values (9+0.755555555);
insert into t4 values (8);
insert into t4 values (8+0.333333333);
insert into t4 values (8+0.755555555);
insert into t4 values (7);
insert into t4 values (7+0.333333333);
insert into t4 values (7+0.755555555);
insert into t4 values (6);
insert into t4 values (6+0.333333333);
insert into t4 values (6+0.755555555);
insert into t4 values (5);
insert into t4 values (5+0.333333333);
insert into t4 values (5+0.755555555);
insert into t4 values (4);
insert into t4 values (4+0.333333333);
insert into t4 values (4+0.755555555);
insert into t4 values (3);
insert into t4 values (3+0.333333333);
insert into t4 values (3+0.755555555);
insert into t4 values (2);
insert into t4 values (2+0.333333333);
insert into t4 values (2+0.755555555);
insert into t4 values (1);
insert into t4 values (1+0.333333333);
insert into t4 values (1+0.755555555);
select count(*) from t4;
count(*)
27
drop table t4;
......@@ -87,95 +87,3 @@ select count(*) from t2;
count(*)
196605
drop table t2;
create table t3 (a decimal(18,9) not null, primary key(a)) engine='MYISAM'
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition pa2 values less than (2),
partition pa4 values less than (4),
partition pa6 values less than (6),
partition pa8 values less than (8),
partition pa10 values less than (10)
);
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` decimal(18,9) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 2 (PARTITION pa2 VALUES LESS THAN (2) ENGINE = MyISAM, PARTITION pa4 VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION pa6 VALUES LESS THAN (6) ENGINE = MyISAM, PARTITION pa8 VALUES LESS THAN (8) ENGINE = MyISAM, PARTITION pa10 VALUES LESS THAN (10) ENGINE = MyISAM) */
9*3 inserts;
insert into t3 values (9);
insert into t3 values (9+0.333333333);
insert into t3 values (9+0.755555555);
insert into t3 values (8);
insert into t3 values (8+0.333333333);
insert into t3 values (8+0.755555555);
insert into t3 values (7);
insert into t3 values (7+0.333333333);
insert into t3 values (7+0.755555555);
insert into t3 values (6);
insert into t3 values (6+0.333333333);
insert into t3 values (6+0.755555555);
insert into t3 values (5);
insert into t3 values (5+0.333333333);
insert into t3 values (5+0.755555555);
insert into t3 values (4);
insert into t3 values (4+0.333333333);
insert into t3 values (4+0.755555555);
insert into t3 values (3);
insert into t3 values (3+0.333333333);
insert into t3 values (3+0.755555555);
insert into t3 values (2);
insert into t3 values (2+0.333333333);
insert into t3 values (2+0.755555555);
insert into t3 values (1);
insert into t3 values (1+0.333333333);
insert into t3 values (1+0.755555555);
select count(*) from t3;
count(*)
27
drop table t3;
create table t4 (a decimal(18,9) not null, primary key(a)) engine='MYISAM'
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 2 (
partition pa2 values in (1,2),
partition pa4 values in (3,4),
partition pa6 values in (5,6),
partition pa8 values in (7,8),
partition pa10 values in (9,10)
);
show create table t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` decimal(18,9) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 2 (PARTITION pa2 VALUES IN (1,2) ENGINE = MyISAM, PARTITION pa4 VALUES IN (3,4) ENGINE = MyISAM, PARTITION pa6 VALUES IN (5,6) ENGINE = MyISAM, PARTITION pa8 VALUES IN (7,8) ENGINE = MyISAM, PARTITION pa10 VALUES IN (9,10) ENGINE = MyISAM) */
9*3 inserts;
insert into t4 values (9);
insert into t4 values (9+0.333333333);
insert into t4 values (9+0.755555555);
insert into t4 values (8);
insert into t4 values (8+0.333333333);
insert into t4 values (8+0.755555555);
insert into t4 values (7);
insert into t4 values (7+0.333333333);
insert into t4 values (7+0.755555555);
insert into t4 values (6);
insert into t4 values (6+0.333333333);
insert into t4 values (6+0.755555555);
insert into t4 values (5);
insert into t4 values (5+0.333333333);
insert into t4 values (5+0.755555555);
insert into t4 values (4);
insert into t4 values (4+0.333333333);
insert into t4 values (4+0.755555555);
insert into t4 values (3);
insert into t4 values (3+0.333333333);
insert into t4 values (3+0.755555555);
insert into t4 values (2);
insert into t4 values (2+0.333333333);
insert into t4 values (2+0.755555555);
insert into t4 values (1);
insert into t4 values (1+0.333333333);
insert into t4 values (1+0.755555555);
select count(*) from t4;
count(*)
27
drop table t4;
......@@ -89,152 +89,6 @@ select count(*) from t2;
count(*)
49152
drop table t2;
create table t3 (a float not null, primary key(a)) engine='MYISAM'
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition pa1 values less than (3),
partition pa3 values less than (6),
partition pa10 values less than (10)
);
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` float NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 3 (PARTITION pa1 VALUES LESS THAN (3) ENGINE = MyISAM, PARTITION pa3 VALUES LESS THAN (6) ENGINE = MyISAM, PARTITION pa10 VALUES LESS THAN (10) ENGINE = MyISAM) */
9*3 inserts;
insert into t3 values (9);
insert into t3 values (9+0.33);
insert into t3 values (9+0.75);
insert into t3 values (8);
insert into t3 values (8+0.33);
insert into t3 values (8+0.75);
insert into t3 values (7);
insert into t3 values (7+0.33);
insert into t3 values (7+0.75);
insert into t3 values (6);
insert into t3 values (6+0.33);
insert into t3 values (6+0.75);
insert into t3 values (5);
insert into t3 values (5+0.33);
insert into t3 values (5+0.75);
insert into t3 values (4);
insert into t3 values (4+0.33);
insert into t3 values (4+0.75);
insert into t3 values (3);
insert into t3 values (3+0.33);
insert into t3 values (3+0.75);
insert into t3 values (2);
insert into t3 values (2+0.33);
insert into t3 values (2+0.75);
insert into t3 values (1);
insert into t3 values (1+0.33);
insert into t3 values (1+0.75);
select count(*) from t3;
count(*)
27
select * from t3;
a
1
1.33
1.75
2
2.33
2.75
3
3.33
3.75
4
4.33
4.75
5
5.33
5.75
6
6.33
6.75
7
7.33
7.75
8
8.33
8.75
9
9.33
9.75
drop table t3;
create table t4 (a float not null, primary key(a)) engine='MYISAM'
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition pa1 values in (1,2,3),
partition pa3 values in (4,5,6),
partition pa10 values in (7,8,9,10)
);
show create table t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` float NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 3 (PARTITION pa1 VALUES IN (1,2,3) ENGINE = MyISAM, PARTITION pa3 VALUES IN (4,5,6) ENGINE = MyISAM, PARTITION pa10 VALUES IN (7,8,9,10) ENGINE = MyISAM) */
9*3 inserts;
insert into t4 values (9);
insert into t4 values (9+0.33);
insert into t4 values (9+0.75);
insert into t4 values (8);
insert into t4 values (8+0.33);
insert into t4 values (8+0.75);
insert into t4 values (7);
insert into t4 values (7+0.33);
insert into t4 values (7+0.75);
insert into t4 values (6);
insert into t4 values (6+0.33);
insert into t4 values (6+0.75);
insert into t4 values (5);
insert into t4 values (5+0.33);
insert into t4 values (5+0.75);
insert into t4 values (4);
insert into t4 values (4+0.33);
insert into t4 values (4+0.75);
insert into t4 values (3);
insert into t4 values (3+0.33);
insert into t4 values (3+0.75);
insert into t4 values (2);
insert into t4 values (2+0.33);
insert into t4 values (2+0.75);
insert into t4 values (1);
insert into t4 values (1+0.33);
insert into t4 values (1+0.75);
select count(*) from t4;
count(*)
27
select * from t4;
a
1
1.33
1.75
2
2.33
2.75
3
3.33
3.75
4
4.33
4.75
5
5.33
5.75
6
6.33
6.75
7
7.33
7.75
8
8.33
8.75
9
9.33
9.75
drop table t4;
create table t1 (a double not null, primary key(a)) engine='MYISAM'
partition by key (a) (
partition pa1 DATA DIRECTORY =
......@@ -318,149 +172,3 @@ select count(*) from t2;
count(*)
49152
drop table t2;
create table t3 (a double not null, primary key(a)) engine='MYISAM'
partition by range (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition pa1 values less than (3),
partition pa3 values less than (6),
partition pa10 values less than (10)
);
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` double NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 3 (PARTITION pa1 VALUES LESS THAN (3) ENGINE = MyISAM, PARTITION pa3 VALUES LESS THAN (6) ENGINE = MyISAM, PARTITION pa10 VALUES LESS THAN (10) ENGINE = MyISAM) */
9*3 inserts;
insert into t3 values (9);
insert into t3 values (9+0.33);
insert into t3 values (9+0.75);
insert into t3 values (8);
insert into t3 values (8+0.33);
insert into t3 values (8+0.75);
insert into t3 values (7);
insert into t3 values (7+0.33);
insert into t3 values (7+0.75);
insert into t3 values (6);
insert into t3 values (6+0.33);
insert into t3 values (6+0.75);
insert into t3 values (5);
insert into t3 values (5+0.33);
insert into t3 values (5+0.75);
insert into t3 values (4);
insert into t3 values (4+0.33);
insert into t3 values (4+0.75);
insert into t3 values (3);
insert into t3 values (3+0.33);
insert into t3 values (3+0.75);
insert into t3 values (2);
insert into t3 values (2+0.33);
insert into t3 values (2+0.75);
insert into t3 values (1);
insert into t3 values (1+0.33);
insert into t3 values (1+0.75);
select count(*) from t3;
count(*)
27
select * from t3;
a
1
1.33
1.75
2
2.33
2.75
3
3.33
3.75
4
4.33
4.75
5
5.33
5.75
6
6.33
6.75
7
7.33
7.75
8
8.33
8.75
9
9.33
9.75
drop table t3;
create table t4 (a double not null, primary key(a)) engine='MYISAM'
partition by list (cast(floor(a) as signed)) subpartition by key (a) subpartitions 3 (
partition pa1 values in (1,2,3),
partition pa3 values in (4,5,6),
partition pa10 values in (7,8,9,10)
);
show create table t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` double NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (cast(floor(a) as signed)) SUBPARTITION BY KEY (a) SUBPARTITIONS 3 (PARTITION pa1 VALUES IN (1,2,3) ENGINE = MyISAM, PARTITION pa3 VALUES IN (4,5,6) ENGINE = MyISAM, PARTITION pa10 VALUES IN (7,8,9,10) ENGINE = MyISAM) */
9*3 inserts;
insert into t4 values (9);
insert into t4 values (9+0.33);
insert into t4 values (9+0.75);
insert into t4 values (8);
insert into t4 values (8+0.33);
insert into t4 values (8+0.75);
insert into t4 values (7);
insert into t4 values (7+0.33);
insert into t4 values (7+0.75);
insert into t4 values (6);
insert into t4 values (6+0.33);
insert into t4 values (6+0.75);
insert into t4 values (5);
insert into t4 values (5+0.33);
insert into t4 values (5+0.75);
insert into t4 values (4);
insert into t4 values (4+0.33);
insert into t4 values (4+0.75);
insert into t4 values (3);
insert into t4 values (3+0.33);
insert into t4 values (3+0.75);
insert into t4 values (2);
insert into t4 values (2+0.33);
insert into t4 values (2+0.75);
insert into t4 values (1);
insert into t4 values (1+0.33);
insert into t4 values (1+0.75);
select count(*) from t4;
count(*)
27
select * from t4;
a
1
1.33
1.75
2
2.33
2.75
3
3.33
3.75
4
4.33
4.75
5
5.33
5.75
6
6.33
6.75
7
7.33
7.75
8
8.33
8.75
9
9.33
9.75
drop table t4;
......@@ -620,7 +620,7 @@ PARTITION BY RANGE(f_int1)
PARTITION part2 VALUES LESS THAN (1000));
ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
PARTITION part2 VALUES LESS THAN (1000))' at line 9
# 3.5.1.2 VALUE LESS THAN (CAST(NULL AS SIGNED INTEGER)) is not allowed
# 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
CREATE TABLE t1 (
f_int1 INTEGER,
f_int2 INTEGER,
......@@ -629,7 +629,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
PARTITION part2 VALUES LESS THAN (1000))' at line 9
......@@ -647,7 +647,7 @@ PARTITION BY LIST(MOD(f_int1,2))
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
DROP TABLE t1;
# 3.5.2.2 VALUE IN (CAST(NULL AS SIGNED INTEGER))
# 3.5.2.2 VALUE IN (NULL)
CREATE TABLE t1 (
f_int1 INTEGER,
f_int2 INTEGER,
......@@ -656,7 +656,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY LIST(MOD(f_int1,2))
( PARTITION part1 VALUES IN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part3 VALUES IN (1));
create_command
SHOW CREATE TABLE t1;
......@@ -679,7 +679,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY LIST(MOD(f_int1,2))
( PARTITION part1 VALUES IN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
create_command
......
......@@ -620,7 +620,7 @@ PARTITION BY RANGE(f_int1)
PARTITION part2 VALUES LESS THAN (1000));
ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
PARTITION part2 VALUES LESS THAN (1000))' at line 9
# 3.5.1.2 VALUE LESS THAN (CAST(NULL AS SIGNED INTEGER)) is not allowed
# 3.5.1.2 VALUE LESS THAN (NULL) is not allowed
CREATE TABLE t1 (
f_int1 INTEGER,
f_int2 INTEGER,
......@@ -629,7 +629,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY RANGE(f_int1)
( PARTITION part1 VALUES LESS THAN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES LESS THAN (NULL),
PARTITION part2 VALUES LESS THAN (1000));
ERROR 42000: Not allowed to use NULL value in VALUES LESS THAN near '),
PARTITION part2 VALUES LESS THAN (1000))' at line 9
......@@ -647,7 +647,7 @@ PARTITION BY LIST(MOD(f_int1,2))
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
DROP TABLE t1;
# 3.5.2.2 VALUE IN (CAST(NULL AS SIGNED INTEGER))
# 3.5.2.2 VALUE IN (NULL)
CREATE TABLE t1 (
f_int1 INTEGER,
f_int2 INTEGER,
......@@ -656,7 +656,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY LIST(MOD(f_int1,2))
( PARTITION part1 VALUES IN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part3 VALUES IN (1));
create_command
SHOW CREATE TABLE t1;
......@@ -687,7 +687,7 @@ f_char2 CHAR(20),
f_charbig VARCHAR(1000)
)
PARTITION BY LIST(MOD(f_int1,2))
( PARTITION part1 VALUES IN (CAST(NULL AS SIGNED INTEGER)),
( PARTITION part1 VALUES IN (NULL),
PARTITION part2 VALUES IN (0),
PARTITION part3 VALUES IN (1));
create_command
......
......@@ -6,6 +6,8 @@ ndb_partition_range : cannot create t1
partition_bit_ndb : cannot create t1
partition_int_ndb : cannot create t1
partition_syntax_ndb : cannot create t1
partition_value_myisam : Bug#30581 partition_value tests use disallowed CAST() function
partition_value_innodb : Bug#30581 partition_value tests use disallowed CAST() function
partition_value_ndb : cannot create t1
partition_basic_ndb : cannot create t1
partition_alter1_ndb : timeout. Needs too much time.
......@@ -13,3 +15,6 @@ partition_alter2_ndb : cannot create t1
partition_char_innodb : crash. Bug? More investigations
partition_sessions : needs system_3_init.inc
partition_engine_ndb : cannot create t1
part_supported_sql_func_ndb : cannot create t1
rpl_ndb_dd_partitions : cannot create t1
partition_float_innodb : Bug#30583 Partition on DOUBLE key + INNODB + count(*) == crash
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment