845 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			845 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | #--disable_abort_on_error | ||
|  | # | ||
|  | # Simple test for the partition storage engine | ||
|  | # Focuses on tests of ordered index read | ||
|  | #  | ||
|  | -- source include/have_partition.inc | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | drop table if exists t1; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, int type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b int not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 order by b; | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned int type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b int unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, tiny int type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b tinyint not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned tinyint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b tinyint unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, smallint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b smallint not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned smallint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b smallint unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | # | ||
|  | # Ordered index read, mediumint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b mediumint not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned int type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b mediumint unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned bigint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b bigint unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, bigint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b bigint not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1;  | ||
|  | # | ||
|  | # Ordered index read, bigint type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b bigint not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, float type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b float not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, double type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b double not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned double type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b double unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, unsigned float type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b float unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, double precision type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b double precision not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, unsigned double precision type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b double precision unsigned not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, decimal type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b decimal not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (2, 5); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, char type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b char(10) not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 0 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, varchar type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b varchar(10) not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, varchar type limited index size | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b varchar(10) not null, | ||
|  | primary key(a), | ||
|  | index (b(5))) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, varchar binary type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b varchar(10) binary not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, tinytext type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b tinytext not null, | ||
|  | primary key(a), | ||
|  | index (b(10))) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, text type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b text not null, | ||
|  | primary key(a), | ||
|  | index (b(10))) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, mediumtext type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b mediumtext not null, | ||
|  | primary key(a), | ||
|  | index (b(10))) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, longtext type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b longtext not null, | ||
|  | primary key(a), | ||
|  | index (b(10))) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '0' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, enum type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b enum('1','2', '4', '5') not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b >= '1' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, set type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b set('1','2', '4', '5') not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '1'); | ||
|  | INSERT into t1 values (2, '5'); | ||
|  | INSERT into t1 values (30, '4'); | ||
|  | INSERT into t1 values (35, '2'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b >= '1' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, date type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b date not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '2001-01-01'); | ||
|  | INSERT into t1 values (2, '2005-01-01'); | ||
|  | INSERT into t1 values (30, '2004-01-01'); | ||
|  | INSERT into t1 values (35, '2002-01-01'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '2000-01-01' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, datetime type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b datetime not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '2001-01-01 00:00:00'); | ||
|  | INSERT into t1 values (2, '2005-01-01 00:00:00'); | ||
|  | INSERT into t1 values (30, '2004-01-01 00:00:00'); | ||
|  | INSERT into t1 values (35, '2002-01-01 00:00:00'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '2000-01-01 00:00:00' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, timestamp type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b timestamp not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '2001-01-01 00:00:00'); | ||
|  | INSERT into t1 values (2, '2005-01-01 00:00:00'); | ||
|  | INSERT into t1 values (30, '2004-01-01 00:00:00'); | ||
|  | INSERT into t1 values (35, '2002-01-01 00:00:00'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '2000-01-01 00:00:00' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, time type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b time not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, '01:00:00'); | ||
|  | INSERT into t1 values (2, '05:00:00'); | ||
|  | INSERT into t1 values (30, '04:00:00'); | ||
|  | INSERT into t1 values (35, '02:00:00'); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > '00:00:00' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, year type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b year not null, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 2001); | ||
|  | INSERT into t1 values (2, 2005); | ||
|  | INSERT into t1 values (30, 2004); | ||
|  | INSERT into t1 values (35, 2002); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b > 2000 order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, bit(5) type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b bit(5) not null, | ||
|  | c int, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, b'00001', NULL); | ||
|  | INSERT into t1 values (2, b'00101', 2); | ||
|  | INSERT into t1 values (30, b'00100', 2); | ||
|  | INSERT into t1 values (35, b'00010', NULL); | ||
|  | 
 | ||
|  | select a from t1 force index (b) where b > b'00000' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | # | ||
|  | # Ordered index read, bit(15) type | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b bit(15) not null, | ||
|  | c int, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1,  b'000000000000001', NULL); | ||
|  | INSERT into t1 values (2,  b'001010000000101', 2); | ||
|  | INSERT into t1 values (30, b'001000000000100', 2); | ||
|  | INSERT into t1 values (35, b'000100000000010', NULL); | ||
|  | 
 | ||
|  | select a from t1 force index (b) where b > b'000000000000000' order by b; | ||
|  | 
 | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Ordered index read, NULL values | ||
|  | # | ||
|  | CREATE TABLE t1 ( | ||
|  | a int not null, | ||
|  | b int, | ||
|  | primary key(a), | ||
|  | index (b)) | ||
|  | partition by range (a) | ||
|  | partitions 2 | ||
|  | (partition x1 values less than (25), | ||
|  |  partition x2 values less than (100)); | ||
|  | 
 | ||
|  | # Insert a couple of tuples | ||
|  | INSERT into t1 values (1, 1); | ||
|  | INSERT into t1 values (5, NULL); | ||
|  | INSERT into t1 values (2, 4); | ||
|  | INSERT into t1 values (3, 3); | ||
|  | INSERT into t1 values (4, 5); | ||
|  | INSERT into t1 values (7, 1); | ||
|  | INSERT into t1 values (6, 6); | ||
|  | INSERT into t1 values (30, 4); | ||
|  | INSERT into t1 values (35, 2); | ||
|  | INSERT into t1 values (40, NULL); | ||
|  | 
 | ||
|  | select * from t1 force index (b) where b < 10 OR b IS NULL order by b; | ||
|  | select * from t1 force index (b) where b < 10 ORDER BY b; | ||
|  | select * from t1 force index (b) where b < 10 ORDER BY b DESC; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | create table t1 (a int not null, b int, c varchar(20), key (a,b,c)) | ||
|  | partition by range (b) | ||
|  | (partition p0 values less than (5), | ||
|  |  partition p1 values less than (10)); | ||
|  | INSERT into t1 values (1,1,'1'),(2,2,'2'),(1,3,'3'),(2,4,'4'),(1,5,'5'); | ||
|  | INSERT into t1 values (2,6,'6'),(1,7,'7'),(2,8,'8'),(1,9,'9'); | ||
|  | INSERT into t1 values (1, NULL, NULL), (2, NULL, '10'); | ||
|  | select * from t1 where a = 1 order by a desc, b desc; | ||
|  | select * from t1 where a = 1 order by b desc; | ||
|  | drop table t1; |