mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 06:22:28 +01:00
bfed329e17
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. mysql-test/include/partition_layout.inc: Ensure that the contents of $MYSQLTEST_VARDIR are not in the result file mysql-test/suite/parts/inc/part_blocked_sql_funcs_main.inc: Add ASCII(), ORD() and WEEKOFYEAR() as blocked functions (they depend too much on character set, etc.). Remove DATEDIFF() as a blocked function (it is implemented in terms of TO_DAYS() and the minus operator). mysql-test/suite/parts/inc/part_supported_sql_funcs_main.inc: Remove ASCII(), ORD() and WEEKOFYEAR(), which are not allowed functions. Remove uses of CAST() in partitioning functions - it is not allowed. Disable testing of FLOOR() and CEILING on non-integer fields, due to Bug 30577. Test MOD() with an integer field instead of floating point (it has a hybrid result type, like FLOOR() and CEILING(), but makes sense to use with an integer field). Add DATEDIFF() as an allowed function, because it is implemented in terms of TO_DAYS() and the minus operator. mysql-test/suite/parts/inc/partition_alter3.inc: Remove use of disallowed CAST() function in partitioning mysql-test/suite/parts/inc/partition_blocked_sql_funcs.inc: The blocked functions are actually blocked now, so expect errors. This is a result of the fix for bug 18198. mysql-test/suite/parts/inc/partition_date.inc: Remove uses of CAST() in partitioning functions - it is not allowed. mysql-test/suite/parts/inc/partition_datetime.inc: Remove uses of CAST() in partitioning functions - it is not allowed. mysql-test/suite/parts/inc/partition_decimal.inc: Remove uses of CAST() in partitioning functions - it is not allowed. Disable testing of FLOOR() and CEILING(), due to Bug 30577. mysql-test/suite/parts/inc/partition_directory.inc: Ensure that the contents of $MYSQLTEST_VARDIR are not in the result file mysql-test/suite/parts/inc/partition_double.inc: Remove uses of CAST() in partitioning functions - it is not allowed. Disable testing of FLOOR() and CEILING(), due to Bug 30577. mysql-test/suite/parts/inc/partition_enum.inc: Remove use of CAST(), which is disallowed. Remove test which relies on CAST(). mysql-test/suite/parts/inc/partition_float.inc: Remove uses of CAST() in partitioning functions - it is not allowed. Disable testing of FLOOR() and CEILING(), due to Bug 30577. mysql-test/suite/parts/inc/partition_layout_check1.inc: Ensure that the contents of $MYSQLTEST_VARDIR are not in the result file mysql-test/suite/parts/inc/partition_layout_check2.inc: Ensure that the contents of $MYSQLTEST_VARDIR are not in the result file mysql-test/suite/parts/inc/partition_methods1.inc: Ensure that the contents of $MYSQLTEST_VARDIR are not in the result file mysql-test/suite/parts/inc/partition_set.inc: Remove test which relies on CAST(), which is disallowed. mysql-test/suite/parts/inc/partition_supported_sql_funcs.inc: Fix Bug #30576: part_supported_sql_func_innodb.test tries to LOAD DATA outside of var dir Move data files into std_data/parts/*, so they can be used with LOAD DATA INFILE '../std_data_ln/parts/*' while --secure-file-priv is in force. mysql-test/suite/parts/inc/partition_syntax.inc: Remove use of CAST(), which is disallowed. mysql-test/suite/parts/inc/partition_time.inc: Remove use of CAST(), which is disallowed. mysql-test/suite/parts/inc/partition_timestamp.inc: Remove use of CAST(), which is disallowed. mysql-test/suite/parts/inc/partition_value.inc: Disable this entire test file, because it relies on using CAST() as a partitioning function, which is disallowed. See Bug 30581, "partition_value tests use disallowed CAST() function". mysql-test/suite/parts/r/part_blocked_sql_func_innodb.result: Update test case results mysql-test/suite/parts/r/part_blocked_sql_func_myisam.result: Update test case results mysql-test/suite/parts/r/part_supported_sql_func_innodb.result: Update test case results mysql-test/suite/parts/r/part_supported_sql_func_myisam.result: Update test case results mysql-test/suite/parts/r/partition_alter3_innodb.result: Update test case results mysql-test/suite/parts/r/partition_alter3_myisam.result: Update test case results mysql-test/suite/parts/r/partition_basic_innodb.result: Update test case results mysql-test/suite/parts/r/partition_basic_myisam.result: Update test case results mysql-test/suite/parts/r/partition_datetime_innodb.result: Update test case results mysql-test/suite/parts/r/partition_datetime_myisam.result: Update test case results mysql-test/suite/parts/r/partition_decimal_innodb.result: Update test case results mysql-test/suite/parts/r/partition_decimal_myisam.result: Update test case results mysql-test/suite/parts/r/partition_float_myisam.result: Update test case results mysql-test/suite/parts/r/partition_syntax_innodb.result: Update test case results mysql-test/suite/parts/r/partition_syntax_myisam.result: Update test case results mysql-test/suite/parts/t/disabled.def: Mark several more tests as disabled: partition_value_myisam, partition_value_innodb, part_supported_sql_func_ndb, rpl_ndb_dd_partitions, and partition_float_innodb mysql-test/std_data/parts/part_supported_sql_funcs_int_ch1.inc: Rename: mysql-test/suite/parts/inc/part_supported_sql_funcs_int_ch1.inc -> mysql-test/std_data/parts/part_supported_sql_funcs_int_ch1.inc mysql-test/std_data/parts/part_supported_sql_funcs_int_date.inc: Rename: mysql-test/suite/parts/inc/part_supported_sql_funcs_int_date.inc -> mysql-test/std_data/parts/part_supported_sql_funcs_int_date.inc mysql-test/std_data/parts/part_supported_sql_funcs_int_float.inc: Rename: mysql-test/suite/parts/inc/part_supported_sql_funcs_int_float.inc -> mysql-test/std_data/parts/part_supported_sql_funcs_int_float.inc mysql-test/std_data/parts/part_supported_sql_funcs_int_int.inc: Rename: mysql-test/suite/parts/inc/part_supported_sql_funcs_int_int.inc -> mysql-test/std_data/parts/part_supported_sql_funcs_int_int.inc mysql-test/std_data/parts/part_supported_sql_funcs_int_time.inc: Rename: mysql-test/suite/parts/inc/part_supported_sql_funcs_int_time.inc -> mysql-test/std_data/parts/part_supported_sql_funcs_int_time.inc mysql-test/suite/parts/inc/partition_alter_1.inc: Correct expected error codes, which changed due to bug 29245. mysql-test/suite/parts/inc/partition_check.inc: Correct expected error codes, which changed due to bug 29245. mysql-test/suite/parts/inc/partition_syntax_1.inc: Correct expected error codes, which changed due to bug 29245.
169 lines
7.2 KiB
PHP
169 lines
7.2 KiB
PHP
################################################################################
|
|
# include/partition_value.inc #
|
|
# #
|
|
# Purpose: #
|
|
# Tests around "exotic" values calculated by the partitioning function #
|
|
# #
|
|
#------------------------------------------------------------------------------#
|
|
# Original Author: ML #
|
|
# Original Date: 2006-04-11 #
|
|
# Change Author: #
|
|
# Change Date: #
|
|
# 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
|
|
--echo # outside of SIGNED BIGINT value range, 0, NULL
|
|
--echo # column used in partitioning function has type CHAR
|
|
--echo #========================================================================
|
|
--echo # 1. HASH(<check value>)
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
#
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY HASH(CAST(f_char1 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER)) PARTITIONS 8;
|
|
let $my_val= 2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= -2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= 0;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
# let $my_val= NULL;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES(NULL,NULL,NULL,NULL,NULL);
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 IS NULL;
|
|
DROP TABLE t1;
|
|
#
|
|
--echo # 2. RANGE(<check value>)
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(CAST(f_char1 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER))
|
|
(PARTITION p0 VALUES LESS THAN (0),
|
|
PARTITION p1 VALUES LESS THAN (1000000),
|
|
PARTITION p2 VALUES LESS THAN MAXVALUE);
|
|
let $my_val= 2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= -2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= 0;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
# let $my_val= NULL;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES(NULL,NULL,NULL,NULL,NULL);
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 IS NULL;
|
|
DROP TABLE t1;
|
|
#
|
|
# The NDB handler only supports 32 bit integers in VALUES
|
|
# therefor we have to skip the next test for NDB.
|
|
if (`SELECT @@session.storage_engine NOT IN('ndbcluster')`)
|
|
{
|
|
--echo # 3. LIST(<check value>)
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(CAST(f_char1 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER))
|
|
(PARTITION p0 VALUES IN (0),
|
|
PARTITION p1 VALUES IN (NULL),
|
|
PARTITION p2 VALUES IN (CAST( 2147483646 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER)),
|
|
PARTITION p3 VALUES IN (CAST(-2147483646 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER)));
|
|
let $my_val= 2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= -2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
let $my_val= 0;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 = '$my_val';
|
|
# let $my_val= NULL;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES(NULL,NULL,NULL,NULL,NULL);
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char1 IS NULL;
|
|
DROP TABLE t1;
|
|
}
|
|
#
|
|
--echo # 4. Partition by RANGE(...) subpartition by HASH(<check value>)
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY RANGE(CAST(f_char1 AS SIGNED INTEGER))
|
|
SUBPARTITION BY HASH(CAST(f_char2 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER)) SUBPARTITIONS 4
|
|
(PARTITION p0 VALUES LESS THAN (0),
|
|
PARTITION p1 VALUES LESS THAN MAXVALUE);
|
|
let $my_val= 2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'1','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
let $my_val= -2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'-1','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
let $my_val= 0;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'$my_val','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
# let $my_val= NULL;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES(NULL,NULL,NULL,NULL,NULL);
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 IS NULL;
|
|
DROP TABLE t1;
|
|
#
|
|
--echo # 5. Partition by LIST(...) subpartition by HASH(<check value>)
|
|
eval CREATE TABLE t1 (
|
|
$column_list
|
|
)
|
|
PARTITION BY LIST(CAST(f_char1 AS SIGNED INTEGER))
|
|
SUBPARTITION BY HASH(CAST(f_char2 AS SIGNED INTEGER) * CAST(5.0E+18 AS SIGNED INTEGER)) SUBPARTITIONS 4
|
|
(PARTITION p0 VALUES IN (NULL),
|
|
PARTITION p1 VALUES IN (1));
|
|
let $my_val= 2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'1','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
let $my_val= -2147483646;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'1','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
let $my_val= 0;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES($my_val,$my_val,'1','$my_val','#$my_val#');
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 = '$my_val';
|
|
# let $my_val= NULL;
|
|
eval INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
|
|
VALUES(NULL,NULL,NULL,NULL,NULL);
|
|
eval SELECT COUNT(*) = 1 FROM t1 WHERE f_char2 IS NULL;
|
|
DROP TABLE t1;
|
|
#
|
|
|
|
--enable_parsing
|