mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--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/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;
 |