polardbxengine/mysql-test/suite/xengine_main/t/rowid_order_xengine.test

124 lines
3.0 KiB
Plaintext

# t/rowid_order_innodb.test
#
# Test for rowid ordering (and comparison) functions.
# do index_merge select for tables with PK of various types.
#
# Last update:
# 2006-07-28 ML test refactored (MySQL 5.1)
# main code t/rowid_order_innodb.test -> include/rowid_order.inc
#
# coped from include/rowid_order.inc
SET SESSION DEFAULT_STORAGE_ENGINE = XENGINE;
--disable_warnings
drop table if exists t1, t2, t3,t4;
--enable_warnings
# Signed number as rowid
create table t1 (
pk1 int not NULL,
key1 int(11),
key2 int(11),
PRIMARY KEY (pk1),
KEY key1 (key1),
KEY key2 (key2)
);
insert into t1 values (-5, 1, 1),
(-100, 1, 1),
(3, 1, 1),
(0, 1, 1),
(10, 1, 1);
-- disable_query_log
-- disable_result_log
analyze table t1;
-- enable_result_log
-- enable_query_log
--replace_column 10 #
explain select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
drop table t1;
# Unsigned numbers as rowids
create table t1 (
pk1 int unsigned not NULL,
key1 int(11),
key2 int(11),
PRIMARY KEY (pk1),
KEY key1 (key1),
KEY key2 (key2)
);
insert into t1 values (0, 1, 1),
(0xFFFFFFFF, 1, 1),
(0xFFFFFFFE, 1, 1),
(1, 1, 1),
(2, 1, 1);
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
drop table t1;
# Case-insensitive char(N)
create table t1 (
pk1 char(4) not NULL,
key1 int(11),
key2 int(11),
PRIMARY KEY (pk1),
KEY key1 (key1),
KEY key2 (key2)
) collate utf8mb4_general_ci;
insert into t1 values ('a1', 1, 1),
('b2', 1, 1),
('A3', 1, 1),
('B4', 1, 1);
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
drop table t1;
# disabled due to latin1_general_ci
# Multi-part PK
#create table t1 (
# pk1 int not NULL,
# pk2 char(4) not NULL collate latin1_general_ci,
# pk3 char(4) not NULL collate latin1_bin,
# key1 int(11),
# key2 int(11),
# PRIMARY KEY (pk1,pk2,pk3),
# KEY key1 (key1),
# KEY key2 (key2)
#);
#insert into t1 values
# (1, 'u', 'u', 1, 1),
# (1, 'u', char(0xEC), 1, 1),
# (1, 'u', 'x', 1, 1);
#insert ignore into t1 select pk1, char(0xEC), pk3, key1, key2 from t1;
#insert ignore into t1 select pk1, 'x', pk3, key1, key2 from t1 where pk2='u';
#insert ignore into t1 select 2, pk2, pk3, key1, key2 from t1;
#select * from t1;
#select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
# Hidden PK
#alter table t1 drop primary key;
#select * from t1;
#select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
#drop table t1;
# Variable-length PK
# this is also test for Bug#2688
create table t1 (
pk1 varchar(8) NOT NULL default '',
pk2 varchar(4) NOT NULL default '',
key1 int(11),
key2 int(11),
primary key(pk1, pk2),
KEY key1 (key1),
KEY key2 (key2)
);
insert into t1 values ('','empt',2,2),
('a','a--a',2,2),
('bb','b--b',2,2),
('ccc','c--c',2,2),
('dddd','d--d',2,2);
select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
drop table t1;
--source suite/xengine/include/check_xengine_log_error.inc