mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
1200228277
Problem was that it tried to run partitioning function calls when opening a partitioned table, when it was explicitly disabled. Solution is to check if the partitioning plugin is ready to use before using any partitioning specific calls.
85 lines
2.4 KiB
Text
85 lines
2.4 KiB
Text
--disable_abort_on_error
|
|
# Run this test only when mysqld has partitioning, but it is disabled.
|
|
# The statements are not expected to work, just check that we
|
|
# can't crash the server.
|
|
--require r/disabled_partition.require
|
|
--disable_query_log
|
|
show variables like "have_partitioning";
|
|
--enable_query_log
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
|
|
|
#
|
|
# Bug#39893: Crash if select on a partitioned table,
|
|
# when partitioning is disabled
|
|
FLUSH TABLES;
|
|
--copy_file $MYSQLTEST_VARDIR/std_data_ln/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
|
|
SELECT * FROM t1;
|
|
TRUNCATE TABLE t1;
|
|
ANALYZE TABLE t1;
|
|
CHECK TABLE t1;
|
|
OPTIMIZE TABLE t1;
|
|
REPAIR TABLE t1;
|
|
ALTER TABLE t1 REPAIR PARTITION ALL;
|
|
ALTER TABLE t1 CHECK PARTITION ALL;
|
|
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
|
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
|
ALTER TABLE t1 REBUILD PARTITION ALL;
|
|
ALTER TABLE t1 ENGINE Memory;
|
|
ALTER TABLE t1 ADD (new INT);
|
|
DROP TABLE t1;
|
|
|
|
--error ER_OPTION_PREVENTS_STATEMENT
|
|
CREATE TABLE t1 (
|
|
firstname VARCHAR(25) NOT NULL,
|
|
lastname VARCHAR(25) NOT NULL,
|
|
username VARCHAR(16) NOT NULL,
|
|
email VARCHAR(35),
|
|
joined DATE NOT NULL
|
|
)
|
|
PARTITION BY KEY(joined)
|
|
PARTITIONS 6;
|
|
|
|
--error ER_OPTION_PREVENTS_STATEMENT
|
|
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
|
|
|
|
--error ER_BAD_TABLE_ERROR
|
|
drop table t1;
|
|
|
|
--error ER_OPTION_PREVENTS_STATEMENT
|
|
CREATE TABLE t1 (
|
|
firstname VARCHAR(25) NOT NULL,
|
|
lastname VARCHAR(25) NOT NULL,
|
|
username VARCHAR(16) NOT NULL,
|
|
email VARCHAR(35),
|
|
joined DATE NOT NULL
|
|
)
|
|
PARTITION BY RANGE( YEAR(joined) ) (
|
|
PARTITION p0 VALUES LESS THAN (1960),
|
|
PARTITION p1 VALUES LESS THAN (1970),
|
|
PARTITION p2 VALUES LESS THAN (1980),
|
|
PARTITION p3 VALUES LESS THAN (1990),
|
|
PARTITION p4 VALUES LESS THAN MAXVALUE
|
|
);
|
|
--error ER_BAD_TABLE_ERROR
|
|
drop table t1;
|
|
|
|
--error ER_OPTION_PREVENTS_STATEMENT
|
|
CREATE TABLE t1 (id INT, purchased DATE)
|
|
PARTITION BY RANGE( YEAR(purchased) )
|
|
SUBPARTITION BY HASH( TO_DAYS(purchased) )
|
|
SUBPARTITIONS 2 (
|
|
PARTITION p0 VALUES LESS THAN (1990),
|
|
PARTITION p1 VALUES LESS THAN (2000),
|
|
PARTITION p2 VALUES LESS THAN MAXVALUE
|
|
);
|
|
--error ER_BAD_TABLE_ERROR
|
|
drop table t1;
|
|
|
|
# Create a table without partitions to test "EXPLAIN PARTITIONS"
|
|
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
|
|
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
|
explain partitions select * from t1 where a='a ' OR a='a';
|
|
drop table t1;
|