Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
1eb64fa6
Commit
1eb64fa6
authored
Jul 07, 2009
by
Patrick Crews
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
61425acb
6155562c
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1594 additions
and
110 deletions
+1594
-110
mysql-test/suite/ibmdb2i/r/ibmdb2i_collations.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_collations.result
+1204
-0
mysql-test/suite/ibmdb2i/t/ibmdb2i_collations.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_collations.test
+44
-0
storage/ibmdb2i/db2i_conversion.cc
storage/ibmdb2i/db2i_conversion.cc
+25
-19
storage/ibmdb2i/db2i_myconv.h
storage/ibmdb2i/db2i_myconv.h
+1
-0
storage/ibmdb2i/db2i_rir.cc
storage/ibmdb2i/db2i_rir.cc
+311
-90
storage/ibmdb2i/ha_ibmdb2i.h
storage/ibmdb2i/ha_ibmdb2i.h
+9
-1
No files found.
mysql-test/suite/ibmdb2i/r/ibmdb2i_collations.result
0 → 100644
View file @
1eb64fa6
drop table if exists t1, ffd, fd;
CREATE TABLE t1 (armscii8_bin integer, c char(10), v varchar(20), index(c), index(v)) collate armscii8_bin engine=ibmdb2i;
CREATE TABLE t1 (armscii8_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate armscii8_general_ci engine=ibmdb2i;
CREATE TABLE t1 (ascii_bin integer, c char(10), v varchar(20), index(c), index(v)) collate ascii_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (ascii_bin char(10) primary key) collate ascii_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ascii_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ascii_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (ascii_general_ci char(10) primary key) collate ascii_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (big5_bin integer, c char(10), v varchar(20), index(c), index(v)) collate big5_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (big5_bin char(10) primary key) collate big5_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (big5_chinese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate big5_chinese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (big5_chinese_ci char(10) primary key) collate big5_chinese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1250_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp1250_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1250_bin char(10) primary key) collate cp1250_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1250_croatian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1250_croatian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1250_croatian_ci char(10) primary key) collate cp1250_croatian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1250_czech_cs integer, c char(10), v varchar(20), index(c), index(v)) collate cp1250_czech_cs engine=ibmdb2i;
CREATE TABLE t1 (cp1250_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1250_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1250_general_ci char(10) primary key) collate cp1250_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1250_polish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1250_polish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1250_polish_ci char(10) primary key) collate cp1250_polish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1251_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp1251_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1251_bin char(10) primary key) collate cp1251_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1251_bulgarian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1251_bulgarian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1251_bulgarian_ci char(10) primary key) collate cp1251_bulgarian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1251_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1251_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1251_general_ci char(10) primary key) collate cp1251_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1251_general_cs integer, c char(10), v varchar(20), index(c), index(v)) collate cp1251_general_cs engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1251_general_cs char(10) primary key) collate cp1251_general_cs engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1251_ukrainian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1251_ukrainian_ci engine=ibmdb2i;
CREATE TABLE t1 (cp1256_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp1256_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1256_bin char(10) primary key) collate cp1256_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1256_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1256_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp1256_general_ci char(10) primary key) collate cp1256_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp1257_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp1257_bin engine=ibmdb2i;
CREATE TABLE t1 (cp1257_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1257_general_ci engine=ibmdb2i;
CREATE TABLE t1 (cp1257_lithuanian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp1257_lithuanian_ci engine=ibmdb2i;
CREATE TABLE t1 (cp850_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp850_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp850_bin char(10) primary key) collate cp850_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp850_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp850_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp850_general_ci char(10) primary key) collate cp850_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp852_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp852_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp852_bin char(10) primary key) collate cp852_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp852_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp852_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (cp852_general_ci char(10) primary key) collate cp852_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp866_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp866_bin engine=ibmdb2i;
CREATE TABLE t1 (cp866_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp866_general_ci engine=ibmdb2i;
CREATE TABLE t1 (cp932_bin integer, c char(10), v varchar(20), index(c), index(v)) collate cp932_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (cp932_bin char(10) primary key) collate cp932_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (cp932_japanese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate cp932_japanese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (cp932_japanese_ci char(10) primary key) collate cp932_japanese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (dec8_bin integer, c char(10), v varchar(20), index(c), index(v)) collate dec8_bin engine=ibmdb2i;
CREATE TABLE t1 (dec8_swedish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate dec8_swedish_ci engine=ibmdb2i;
CREATE TABLE t1 (eucjpms_bin integer, c char(10), v varchar(20), index(c), index(v)) collate eucjpms_bin engine=ibmdb2i;
CREATE TABLE t1 (eucjpms_japanese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate eucjpms_japanese_ci engine=ibmdb2i;
CREATE TABLE t1 (euckr_bin integer, c char(10), v varchar(20), index(c), index(v)) collate euckr_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (euckr_bin char(10) primary key) collate euckr_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (euckr_korean_ci integer, c char(10), v varchar(20), index(c), index(v)) collate euckr_korean_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (euckr_korean_ci char(10) primary key) collate euckr_korean_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (gb2312_bin integer, c char(10), v varchar(20), index(c), index(v)) collate gb2312_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (gb2312_bin char(10) primary key) collate gb2312_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (gb2312_chinese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate gb2312_chinese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (gb2312_chinese_ci char(10) primary key) collate gb2312_chinese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (gbk_bin integer, c char(10), v varchar(20), index(c), index(v)) collate gbk_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (gbk_bin char(10) primary key) collate gbk_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (gbk_chinese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate gbk_chinese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (gbk_chinese_ci char(10) primary key) collate gbk_chinese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (geostd8_bin integer, c char(10), v varchar(20), index(c), index(v)) collate geostd8_bin engine=ibmdb2i;
CREATE TABLE t1 (geostd8_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate geostd8_general_ci engine=ibmdb2i;
CREATE TABLE t1 (greek_bin integer, c char(10), v varchar(20), index(c), index(v)) collate greek_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (greek_bin char(10) primary key) collate greek_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (greek_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate greek_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (greek_general_ci char(10) primary key) collate greek_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (hebrew_bin integer, c char(10), v varchar(20), index(c), index(v)) collate hebrew_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (hebrew_bin char(10) primary key) collate hebrew_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (hebrew_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate hebrew_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (hebrew_general_ci char(10) primary key) collate hebrew_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (hp8_bin integer, c char(10), v varchar(20), index(c), index(v)) collate hp8_bin engine=ibmdb2i;
CREATE TABLE t1 (hp8_english_ci integer, c char(10), v varchar(20), index(c), index(v)) collate hp8_english_ci engine=ibmdb2i;
CREATE TABLE t1 (keybcs2_bin integer, c char(10), v varchar(20), index(c), index(v)) collate keybcs2_bin engine=ibmdb2i;
CREATE TABLE t1 (keybcs2_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate keybcs2_general_ci engine=ibmdb2i;
CREATE TABLE t1 (koi8r_bin integer, c char(10), v varchar(20), index(c), index(v)) collate koi8r_bin engine=ibmdb2i;
CREATE TABLE t1 (koi8r_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate koi8r_general_ci engine=ibmdb2i;
CREATE TABLE t1 (koi8u_bin integer, c char(10), v varchar(20), index(c), index(v)) collate koi8u_bin engine=ibmdb2i;
CREATE TABLE t1 (koi8u_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate koi8u_general_ci engine=ibmdb2i;
CREATE TABLE t1 (latin1_bin integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_bin char(10) primary key) collate latin1_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_danish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_danish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_danish_ci char(10) primary key) collate latin1_danish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_general_ci char(10) primary key) collate latin1_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_general_cs integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_general_cs engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_general_cs char(10) primary key) collate latin1_general_cs engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_german1_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_german1_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_german1_ci char(10) primary key) collate latin1_german1_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_german2_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_german2_ci engine=ibmdb2i;
CREATE TABLE t1 (latin1_spanish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_spanish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_spanish_ci char(10) primary key) collate latin1_spanish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin1_swedish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin1_swedish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin1_swedish_ci char(10) primary key) collate latin1_swedish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin2_bin integer, c char(10), v varchar(20), index(c), index(v)) collate latin2_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin2_bin char(10) primary key) collate latin2_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin2_croatian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin2_croatian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin2_croatian_ci char(10) primary key) collate latin2_croatian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin2_czech_cs integer, c char(10), v varchar(20), index(c), index(v)) collate latin2_czech_cs engine=ibmdb2i;
CREATE TABLE t1 (latin2_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin2_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin2_general_ci char(10) primary key) collate latin2_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin2_hungarian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin2_hungarian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin2_hungarian_ci char(10) primary key) collate latin2_hungarian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin5_bin integer, c char(10), v varchar(20), index(c), index(v)) collate latin5_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin5_bin char(10) primary key) collate latin5_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin5_turkish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin5_turkish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (latin5_turkish_ci char(10) primary key) collate latin5_turkish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (latin7_bin integer, c char(10), v varchar(20), index(c), index(v)) collate latin7_bin engine=ibmdb2i;
CREATE TABLE t1 (latin7_estonian_cs integer, c char(10), v varchar(20), index(c), index(v)) collate latin7_estonian_cs engine=ibmdb2i;
CREATE TABLE t1 (latin7_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate latin7_general_ci engine=ibmdb2i;
CREATE TABLE t1 (latin7_general_cs integer, c char(10), v varchar(20), index(c), index(v)) collate latin7_general_cs engine=ibmdb2i;
CREATE TABLE t1 (macce_bin integer, c char(10), v varchar(20), index(c), index(v)) collate macce_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (macce_bin char(10) primary key) collate macce_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (macce_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate macce_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (macce_general_ci char(10) primary key) collate macce_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (macroman_bin integer, c char(10), v varchar(20), index(c), index(v)) collate macroman_bin engine=ibmdb2i;
CREATE TABLE t1 (macroman_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate macroman_general_ci engine=ibmdb2i;
CREATE TABLE t1 (sjis_bin integer, c char(10), v varchar(20), index(c), index(v)) collate sjis_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (sjis_bin char(10) primary key) collate sjis_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (sjis_japanese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate sjis_japanese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (sjis_japanese_ci char(10) primary key) collate sjis_japanese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (swe7_bin integer, c char(10), v varchar(20), index(c), index(v)) collate swe7_bin engine=ibmdb2i;
CREATE TABLE t1 (swe7_swedish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate swe7_swedish_ci engine=ibmdb2i;
CREATE TABLE t1 (tis620_bin integer, c char(10), v varchar(20), index(c), index(v)) collate tis620_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (tis620_bin char(10) primary key) collate tis620_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (tis620_thai_ci integer, c char(10), v varchar(20), index(c), index(v)) collate tis620_thai_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 11 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 23 NULL 6 Using where
drop table t1;
create table t1 (tis620_thai_ci char(10) primary key) collate tis620_thai_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_bin integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_bin char(10) primary key) collate ucs2_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_czech_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_czech_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_czech_ci char(10) primary key) collate ucs2_czech_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_danish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_danish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_danish_ci char(10) primary key) collate ucs2_danish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_esperanto_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_esperanto_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_esperanto_ci char(10) primary key) collate ucs2_esperanto_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_estonian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_estonian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_estonian_ci char(10) primary key) collate ucs2_estonian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_general_ci char(10) primary key) collate ucs2_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_hungarian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_hungarian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_hungarian_ci char(10) primary key) collate ucs2_hungarian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_icelandic_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_icelandic_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_icelandic_ci char(10) primary key) collate ucs2_icelandic_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_latvian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_latvian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_latvian_ci char(10) primary key) collate ucs2_latvian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_lithuanian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_lithuanian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_lithuanian_ci char(10) primary key) collate ucs2_lithuanian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_persian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_persian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_persian_ci char(10) primary key) collate ucs2_persian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_polish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_polish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_polish_ci char(10) primary key) collate ucs2_polish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_romanian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_romanian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_romanian_ci char(10) primary key) collate ucs2_romanian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_roman_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_roman_ci engine=ibmdb2i;
CREATE TABLE t1 (ucs2_slovak_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_slovak_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_slovak_ci char(10) primary key) collate ucs2_slovak_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_slovenian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_slovenian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_slovenian_ci char(10) primary key) collate ucs2_slovenian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_spanish2_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_spanish2_ci engine=ibmdb2i;
CREATE TABLE t1 (ucs2_spanish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_spanish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_spanish_ci char(10) primary key) collate ucs2_spanish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_swedish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_swedish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_swedish_ci char(10) primary key) collate ucs2_swedish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_turkish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_turkish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_turkish_ci char(10) primary key) collate ucs2_turkish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ucs2_unicode_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ucs2_unicode_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 21 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 43 NULL 6 Using where
drop table t1;
create table t1 (ucs2_unicode_ci char(10) primary key) collate ucs2_unicode_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ujis_bin integer, c char(10), v varchar(20), index(c), index(v)) collate ujis_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (ujis_bin char(10) primary key) collate ujis_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (ujis_japanese_ci integer, c char(10), v varchar(20), index(c), index(v)) collate ujis_japanese_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (ujis_japanese_ci char(10) primary key) collate ujis_japanese_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_bin integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_bin engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_bin char(10) primary key) collate utf8_bin engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_czech_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_czech_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_czech_ci char(10) primary key) collate utf8_czech_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_danish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_danish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_danish_ci char(10) primary key) collate utf8_danish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_esperanto_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_esperanto_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_esperanto_ci char(10) primary key) collate utf8_esperanto_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_estonian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_estonian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_estonian_ci char(10) primary key) collate utf8_estonian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_general_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_general_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_general_ci char(10) primary key) collate utf8_general_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_hungarian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_hungarian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_hungarian_ci char(10) primary key) collate utf8_hungarian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_icelandic_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_icelandic_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_icelandic_ci char(10) primary key) collate utf8_icelandic_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_latvian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_latvian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_latvian_ci char(10) primary key) collate utf8_latvian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_lithuanian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_lithuanian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_lithuanian_ci char(10) primary key) collate utf8_lithuanian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_persian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_persian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_persian_ci char(10) primary key) collate utf8_persian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_polish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_polish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_polish_ci char(10) primary key) collate utf8_polish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_romanian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_romanian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_romanian_ci char(10) primary key) collate utf8_romanian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_roman_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_roman_ci engine=ibmdb2i;
CREATE TABLE t1 (utf8_slovak_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_slovak_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_slovak_ci char(10) primary key) collate utf8_slovak_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_slovenian_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_slovenian_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_slovenian_ci char(10) primary key) collate utf8_slovenian_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_spanish2_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_spanish2_ci engine=ibmdb2i;
CREATE TABLE t1 (utf8_spanish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_spanish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_spanish_ci char(10) primary key) collate utf8_spanish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_swedish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_swedish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_swedish_ci char(10) primary key) collate utf8_swedish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_turkish_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_turkish_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_turkish_ci char(10) primary key) collate utf8_turkish_ci engine=ibmdb2i;
drop table t1;
CREATE TABLE t1 (utf8_unicode_ci integer, c char(10), v varchar(20), index(c), index(v)) collate utf8_unicode_ci engine=ibmdb2i;
insert into t1 (c,v) values ("abc","def"),("abcd", "def"),("abcde","defg"),("aaaa","bbbb");
insert into t1 select * from t1;
explain select c,v from t1 force index(c) where c like "ab%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 31 NULL 6 Using where
explain select c,v from t1 force index(v) where v like "de%";
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 63 NULL 6 Using where
drop table t1;
create table t1 (utf8_unicode_ci char(10) primary key) collate utf8_unicode_ci engine=ibmdb2i;
drop table t1;
create table ffd (WHCHD1 CHAR(20), WHCSID decimal(5,0)) engine=ibmdb2i;
create table fd (SQSSEQ CHAR(10)) engine=ibmdb2i;
create temporary table intermed (row integer key auto_increment, cs char(30), ccsid integer);
insert into intermed (cs, ccsid) select * from ffd;
create temporary table intermed2 (row integer key auto_increment, srtseq char(10));
insert into intermed2 (srtseq) select * from fd;
select ccsid, cs, srtseq from intermed inner join intermed2 on intermed.row = intermed2.row;
ccsid cs srtseq
500 "ascii_bin" QBLA101F4U
500 "ascii_general_ci" QALA101F4S
1200 "big5_bin" QBCHT04B0U
1200 "big5_chinese_ci" QACHT04B0S
1153 "cp1250_bin" QELA20481U
1153 "cp1250_croatian_ci" QALA20481S
1153 "cp1250_general_ci" QCLA20481S
1153 "cp1250_polish_ci" QDLA20481S
1025 "cp1251_bin" QCCYR0401U
1025 "cp1251_bulgarian_ci QACYR0401S
1025 "cp1251_general_ci" QBCYR0401S
1025 "cp1251_general_cs" QBCYR0401U
420 "cp1256_bin" QBARA01A4U
420 "cp1256_general_ci" QAARA01A4S
500 "cp850_bin" QDLA101F4U
500 "cp850_general_ci" QCLA101F4S
870 "cp852_bin" QBLA20366U
870 "cp852_general_ci" QALA20366S
1200 "cp932_bin" QBJPN04B0U
1200 "cp932_japanese_ci" QAJPN04B0S
1200 "euckr_bin" QBKOR04B0U
1200 "euckr_korean_ci" QAKOR04B0S
1200 "gb2312_bin" QBCHS04B0U
1200 "gb2312_chinese_ci" QACHS04B0S
1200 "gbk_bin" QDCHS04B0U
1200 "gbk_chinese_ci" QCCHS04B0S
875 "greek_bin" QBELL036BU
875 "greek_general_ci" QAELL036BS
424 "hebrew_bin" QBHEB01A8U
424 "hebrew_general_ci" QAHEB01A8S
1148 "latin1_bin" QFLA1047CU
1148 "latin1_danish_ci" QALA1047CS
1148 "latin1_general_ci" QBLA1047CS
1148 "latin1_general_cs" QBLA1047CU
1148 "latin1_german1_ci" QCLA1047CS
1148 "latin1_spanish_ci" QDLA1047CS
1148 "latin1_swedish_ci" QELA1047CS
870 "latin2_bin" QGLA20366U
870 "latin2_croatian_ci" QCLA20366S
870 "latin2_general_ci" QELA20366S
870 "latin2_hungarian_ci QFLA20366S
1026 "latin5_bin" QBTRK0402U
1026 "latin5_turkish_ci" QATRK0402S
870 "macce_bin" QILA20366U
870 "macce_general_ci" QHLA20366S
1200 "sjis_bin" QDJPN04B0U
1200 "sjis_japanese_ci" QCJPN04B0S
838 "tis620_bin" QBTHA0346U
838 "tis620_thai_ci" QATHA0346S
13488 "ucs2_bin" *HEX
13488 "ucs2_czech_ci" I34ACS_CZ
13488 "ucs2_danish_ci" I34ADA_DK
13488 "ucs2_esperanto_ci" I34AEO
13488 "ucs2_estonian_ci" I34AET
13488 "ucs2_general_ci" QAUCS04B0S
13488 "ucs2_hungarian_ci" I34AHU
13488 "ucs2_icelandic_ci" I34AIS
13488 "ucs2_latvian_ci" I34ALV
13488 "ucs2_lithuanian_ci" I34ALT
13488 "ucs2_persian_ci" I34AFA
13488 "ucs2_polish_ci" I34APL
13488 "ucs2_romanian_ci" I34ARO
13488 "ucs2_slovak_ci" I34ASK
13488 "ucs2_slovenian_ci" I34ASL
13488 "ucs2_spanish_ci" I34AES
13488 "ucs2_swedish_ci" I34ASW
13488 "ucs2_turkish_ci" I34ATR
13488 "ucs2_unicode_ci" I34AEN
1200 "ujis_bin" QFJPN04B0U
1200 "ujis_japanese_ci" QEJPN04B0S
1208 "utf8_bin" *HEX
1208 "utf8_czech_ci" I34ACS_CZ
1208 "utf8_danish_ci" I34ADA_DK
1208 "utf8_esperanto_ci" I34AEO
1208 "utf8_estonian_ci" I34AET
1200 "utf8_general_ci" QAUCS04B0S
1208 "utf8_hungarian_ci" I34AHU
1208 "utf8_icelandic_ci" I34AIS
1208 "utf8_latvian_ci" I34ALV
1208 "utf8_lithuanian_ci" I34ALT
1208 "utf8_persian_ci" I34AFA
1208 "utf8_polish_ci" I34APL
1208 "utf8_romanian_ci" I34ARO
1208 "utf8_slovak_ci" I34ASK
1208 "utf8_slovenian_ci" I34ASL
1208 "utf8_spanish_ci" I34AES
1208 "utf8_swedish_ci" I34ASW
1208 "utf8_turkish_ci" I34ATR
1208 "utf8_unicode_ci" I34AEN
drop table ffd, fd;
mysql-test/suite/ibmdb2i/t/ibmdb2i_collations.test
0 → 100644
View file @
1eb64fa6
source
suite
/
ibmdb2i
/
include
/
have_ibmdb2i
.
inc
;
source
suite
/
ibmdb2i
/
include
/
have_i61
.
inc
;
--
disable_warnings
drop
table
if
exists
t1
,
ffd
,
fd
;
--
enable_warnings
--
disable_abort_on_error
--
error
0
,
255
exec
system
"DLTF QGPL/FFDOUT"
>
/
dev
/
null
;
--
error
0
,
255
exec
system
"DLTF QGPL/FDOUT"
>
/
dev
/
null
;
--
enable_abort_on_error
let
$count
=
query_get_value
(
select
count
(
*
)
from
information_schema
.
COLLATIONS
where
COLLATION_NAME
<>
"binary"
,
count
(
*
),
1
);
while
(
$count
)
{
let
$collation
=
query_get_value
(
select
COLLATION_NAME
from
information_schema
.
COLLATIONS
where
COLLATION_NAME
<>
"binary"
order
by
COLLATION_NAME
desc
,
COLLATION_NAME
,
$count
);
error
0
,
1005
,
2504
,
2028
;
eval
CREATE
TABLE
t1
(
$collation
integer
,
c
char
(
10
),
v
varchar
(
20
),
index
(
c
),
index
(
v
))
collate
$collation
engine
=
ibmdb2i
;
if
(
!
$mysql_errno
)
{
insert
into
t1
(
c
,
v
)
values
(
"abc"
,
"def"
),(
"abcd"
,
"def"
),(
"abcde"
,
"defg"
),(
"aaaa"
,
"bbbb"
);
insert
into
t1
select
*
from
t1
;
explain
select
c
,
v
from
t1
force
index
(
c
)
where
c
like
"ab%"
;
explain
select
c
,
v
from
t1
force
index
(
v
)
where
v
like
"de%"
;
drop
table
t1
;
eval
create
table
t1
(
$collation
char
(
10
)
primary
key
)
collate
$collation
engine
=
ibmdb2i
;
system
system
"DSPFFD FILE(
\"
test
\"
/
\"
t1
\"
) OUTPUT(*OUTFILE) OUTFILE(QGPL/FFDOUT) OUTMBR(*FIRST *ADD)"
>
/
dev
/
null
;
system
system
"DSPFD FILE(
\"
test
\"
/
\"
t1
\"
) TYPE(*SEQ) OUTPUT(*OUTFILE) OUTFILE(QGPL/FDOUT) OUTMBR(*FIRST *ADD)"
>
/
dev
/
null
;
drop
table
t1
;
}
dec
$count
;
}
create
table
ffd
(
WHCHD1
CHAR
(
20
),
WHCSID
decimal
(
5
,
0
))
engine
=
ibmdb2i
;
system
system
"CPYF FROMFILE(QGPL/FFDOUT) TOFILE(
\"
test
\"
/
\"
ffd
\"
) mbropt(*replace) fmtopt(*drop *map)"
>
/
dev
/
null
;
create
table
fd
(
SQSSEQ
CHAR
(
10
))
engine
=
ibmdb2i
;
system
system
"CPYF FROMFILE(QGPL/FDOUT) TOFILE(
\"
test
\"
/
\"
fd
\"
) mbropt(*replace) fmtopt(*drop *map)"
>
/
dev
/
null
;
create
temporary
table
intermed
(
row
integer
key
auto_increment
,
cs
char
(
30
),
ccsid
integer
);
insert
into
intermed
(
cs
,
ccsid
)
select
*
from
ffd
;
create
temporary
table
intermed2
(
row
integer
key
auto_increment
,
srtseq
char
(
10
));
insert
into
intermed2
(
srtseq
)
select
*
from
fd
;
select
ccsid
,
cs
,
srtseq
from
intermed
inner
join
intermed2
on
intermed
.
row
=
intermed2
.
row
;
drop
table
ffd
,
fd
;
storage/ibmdb2i/db2i_conversion.cc
View file @
1eb64fa6
...
...
@@ -137,7 +137,9 @@ int ha_ibmdb2i::convertFieldChars(enum_conversionDirection direction,
char
*
output
,
size_t
ilen
,
size_t
olen
,
size_t
*
outDataLen
)
size_t
*
outDataLen
,
bool
tacitErrors
,
size_t
*
substChars
)
{
DBUG_PRINT
(
"ha_ibmdb2i::convertFieldChars"
,(
"Direction: %d; length = %d"
,
direction
,
ilen
));
...
...
@@ -157,27 +159,27 @@ int ha_ibmdb2i::convertFieldChars(enum_conversionDirection direction,
size_t
initOLen
=
olen
;
size_t
substitutedChars
=
0
;
int
rc
=
iconv
(
conversion
,
(
char
**
)
&
input
,
&
ilen
,
&
output
,
&
olen
,
&
substitutedChars
);
if
(
outDataLen
)
*
outDataLen
=
initOLen
-
olen
;
if
(
substChars
)
*
substChars
=
substitutedChars
;
if
(
unlikely
(
rc
<
0
))
{
int
er
=
errno
;
if
(
er
==
EILSEQ
)
{
getErrTxt
(
DB2I_ERR_ILL_CHAR
,
table
->
field
[
fieldID
]
->
field_name
);
if
(
!
tacitErrors
)
getErrTxt
(
DB2I_ERR_ILL_CHAR
,
table
->
field
[
fieldID
]
->
field_name
);
return
(
DB2I_ERR_ILL_CHAR
);
}
else
{
getErrTxt
(
DB2I_ERR_ICONV
,
er
);
if
(
!
tacitErrors
)
getErrTxt
(
DB2I_ERR_ICONV
,
er
);
return
(
DB2I_ERR_ICONV
);
}
}
if
(
unlikely
(
substitutedChars
))
if
(
unlikely
(
substitutedChars
)
&&
(
!
tacitErrors
)
)
{
warning
(
ha_thd
(),
DB2I_ERR_SUB_CHARS
,
table
->
field
[
fieldID
]
->
field_name
);
}
if
(
outDataLen
)
*
outDataLen
=
initOLen
-
olen
;
return
(
0
);
}
...
...
@@ -555,12 +557,12 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
return
1
;
if
(
fieldCharSet
->
mbmaxlen
>
1
)
{
if
(
strncmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
)
==
0
)
// UCS2
if
(
memcmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
-
1
)
==
0
)
// UCS2
{
sprintf
(
stringBuildBuffer
,
"GRAPHIC(%d)"
,
max
(
fieldLength
/
fieldCharSet
->
mbmaxlen
,
1
));
// Number of characters
db2Ccsid
=
13488
;
}
else
if
(
strncmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
)
==
0
&&
else
if
(
memcmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
-
1
)
==
0
&&
strcmp
(
fieldCharSet
->
name
,
"utf8_general_ci"
)
!=
0
)
{
sprintf
(
stringBuildBuffer
,
"CHAR(%d)"
,
max
(
fieldLength
,
1
));
// Number of bytes
...
...
@@ -584,12 +586,12 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
{
if
(
fieldCharSet
->
mbmaxlen
>
1
)
{
if
(
strncmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
)
==
0
)
// UCS2
if
(
memcmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
-
1
)
==
0
)
// UCS2
{
sprintf
(
stringBuildBuffer
,
"VARGRAPHIC(%d)"
,
max
(
fieldLength
/
fieldCharSet
->
mbmaxlen
,
1
));
// Number of characters
db2Ccsid
=
13488
;
}
else
if
(
strncmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
)
==
0
&&
else
if
(
memcmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
-
1
)
==
0
&&
strcmp
(
fieldCharSet
->
name
,
"utf8_general_ci"
)
!=
0
)
{
sprintf
(
stringBuildBuffer
,
"VARCHAR(%d)"
,
max
(
fieldLength
,
1
));
// Number of bytes
...
...
@@ -611,12 +613,12 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
{
if
(
fieldCharSet
->
mbmaxlen
>
1
)
{
if
(
strncmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
)
==
0
)
// UCS2
if
(
memcmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
-
1
)
==
0
)
// UCS2
{
sprintf
(
stringBuildBuffer
,
"LONG VARGRAPHIC "
);
db2Ccsid
=
13488
;
}
else
if
(
strncmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
)
==
0
&&
else
if
(
memcmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
-
1
)
==
0
&&
strcmp
(
fieldCharSet
->
name
,
"utf8_general_ci"
)
!=
0
)
{
sprintf
(
stringBuildBuffer
,
"LONG VARCHAR "
);
...
...
@@ -639,12 +641,12 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
if
(
fieldCharSet
->
mbmaxlen
>
1
)
{
if
(
strncmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
)
==
0
)
// UCS2
if
(
memcmp
(
fieldCharSet
->
name
,
"ucs2_"
,
sizeof
(
"ucs2_"
)
-
1
)
==
0
)
// UCS2
{
sprintf
(
stringBuildBuffer
,
"DBCLOB(%d)"
,
max
(
fieldLength
/
fieldCharSet
->
mbmaxlen
,
1
));
// Number of characters
db2Ccsid
=
13488
;
}
else
if
(
strncmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
)
==
0
&&
else
if
(
memcmp
(
fieldCharSet
->
name
,
"utf8_"
,
sizeof
(
"utf8_"
)
-
1
)
==
0
&&
strcmp
(
fieldCharSet
->
name
,
"utf8_general_ci"
)
!=
0
)
{
sprintf
(
stringBuildBuffer
,
"CLOB(%d)"
,
max
(
fieldLength
,
1
));
// Number of bytes
...
...
@@ -671,11 +673,15 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
return
rtnCode
;
}
if
(
db2Ccsid
!=
1208
&&
db2Ccsid
!=
13488
)
{
// Check whether there is a character conversion available.
iconv_t
temp
;
int32
rc
=
getConversion
(
toDB2
,
fieldCharSet
,
db2Ccsid
,
temp
);
if
(
unlikely
(
rc
))
return
rc
;
}
sprintf
(
stringBuildBuffer
,
" CCSID %d "
,
db2Ccsid
);
mapping
.
append
(
stringBuildBuffer
);
...
...
storage/ibmdb2i/db2i_myconv.h
View file @
1eb64fa6
...
...
@@ -220,6 +220,7 @@ INTERN size_t myconv_dmap(myconv_t cd,
}
else
{
*
pOut
=
dmapS2S
[
*
pIn
];
if
(
*
pOut
==
0x00
)
{
errno
=
EILSEQ
;
/* 116 */
*
outBytesLeft
-=
(
*
inBytesLeft
-
inLen
);
*
inBytesLeft
=
inLen
;
*
outBuf
=
pOut
;
...
...
storage/ibmdb2i/db2i_rir.cc
View file @
1eb64fa6
...
...
@@ -51,7 +51,6 @@ static inline int getKeyCntFromMap(key_part_map keypart_map)
return
(
cnt
);
}
/**
@brief
Given a starting key and an ending key, estimate the number of rows that
...
...
@@ -270,81 +269,163 @@ ha_rows ha_ibmdb2i::records_in_range(uint inx,
DB2Field
&
db2Field
=
db2Table
->
db2Field
(
field
->
field_index
);
litDefPtr
->
DataType
=
db2Field
.
getType
();
/*
Convert the literal to DB2 format.
*/
rc
=
convertMySQLtoDB2
(
field
,
db2Field
,
literalPtr
,
(
uchar
*
)
minPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
));
if
(
rc
!=
0
)
break
;
litDefPtr
->
Offset
=
(
uint32_t
)(
literalPtr
-
literalsPtr
);
litDefPtr
->
Length
=
db2Field
.
getByteLengthInRecord
();
tempLen
=
litDefPtr
->
Length
;
/*
Do additional conversion of a character or graphic value.
Convert the literal to DB2 format
*/
CHARSET_INFO
*
fieldCharSet
=
field
->
charset
();
if
((
field
->
type
()
!=
MYSQL_TYPE_BIT
)
&&
// Don't do conversion on BIT data
(
field
->
charset
()
!=
&
my_charset_bin
)
&&
// Don't do conversion on BINARY data
(
litDefPtr
->
DataType
==
QMY_CHAR
||
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_GRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
))
(
litDefPtr
->
DataType
==
QMY_CHAR
||
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_GRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
))
{
// Most of the code is required by the considerable wrangling needed
// to prepare partial keys for use by DB2
// 1. UTF8 (CCSID 1208) data can be copied across unmodified if it is
// utf8_bin. Otherwise, we need to convert the min and max
// characters into the min and max characters employed
// by the DB2 sort sequence. This is complicated by the fact that
// the character widths are not always equal.
// 2. Likewise, UCS2 (CCSID 13488) data can be copied across unmodified
// if it is ucs2_bin or ucs2_general_ci. Otherwise, we need to
// convert the min and max characters into the min and max characters
// employed by the DB2 sort sequence.
// 3. All other data will use standard iconv conversions. If an
// unconvertible character is encountered, we assume it is the min
// char and fill the remainder of the DB2 key with 0s. This may not
// always be accurate, but it is probably sufficient for range
// estimations.
const
char
*
keyData
=
minPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
);
char
*
db2Data
=
literalPtr
;
uint16
outLen
=
db2Field
.
getByteLengthInRecord
();
uint16
inLen
;
if
(
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
)
tempPtr
=
literalPtr
+
sizeof
(
uint16
);
else
tempPtr
=
literalPtr
;
/* The following code checks to determine if MySQL is passing a
partial key. DB2 will accept a partial field value, but only
in the last field position of the key composite (and only if
there is no ICU sort sequence on the index). */
tempMinPtr
=
(
char
*
)
minPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
);
if
(
field
->
type
()
==
MYSQL_TYPE_VARCHAR
)
{
/* MySQL always stores key lengths as 2 bytes, little-endian. */
tempLen
=
*
(
uint8
*
)
tempMinPtr
+
((
*
(
uint8
*
)(
tempMinPtr
+
1
))
<<
8
);
tempMinPtr
=
(
char
*
)((
char
*
)
tempMinPtr
+
2
);
{
inLen
=
*
(
uint8
*
)
keyData
+
((
*
(
uint8
*
)(
keyData
+
1
))
<<
8
);
keyData
+=
2
;
outLen
-=
sizeof
(
uint16
);
db2Data
+=
sizeof
(
uint16
);
}
else
tempLen
=
field
->
field_length
;
{
inLen
=
field
->
max_display_length
();
}
/* Determine if we are dealing with a partial key and if so, find the end of the partial key. */
if
(
litDefPtr
->
DataType
==
QMY_CHAR
||
litDefPtr
->
DataType
==
QMY_VARCHAR
)
{
/* Char or varchar. If UTF8, no conversion is done to DB2 graphic.) */
endOfMinPtr
=
(
char
*
)
memchr
(
tempMinPtr
,
field
->
charset
()
->
min_sort_char
,
tempLen
);
if
(
endOfMinPtr
)
endOfLiteralPtr
=
tempPtr
+
((
uint32_t
)(
endOfMinPtr
-
tempMinPtr
));
size_t
convertedBytes
=
0
;
if
(
db2Field
.
getCCSID
()
==
1208
)
{
DBUG_ASSERT
(
inLen
<=
outLen
);
if
(
strcmp
(
field
->
charset
()
->
name
,
"utf8_bin"
))
{
const
char
*
end
=
keyData
+
inLen
;
const
char
*
curKey
=
keyData
;
char
*
curDB2
=
db2Data
;
uint32
min
=
field
->
charset
()
->
min_sort_char
;
while
((
curKey
<
end
)
&&
(
curDB2
<
db2Data
+
outLen
-
3
))
{
my_wc_t
temp
;
int
len
=
field
->
charset
()
->
cset
->
mb_wc
(
field
->
charset
(),
&
temp
,
(
const
uchar
*
)
curKey
,
(
const
uchar
*
)
end
);
if
(
temp
!=
min
)
{
DBUG_ASSERT
(
len
<=
3
);
switch
(
len
)
{
case
3
:
*
(
curDB2
+
2
)
=
*
(
curKey
+
2
);
case
2
:
*
(
curDB2
+
1
)
=
*
(
curKey
+
1
);
case
1
:
*
(
curDB2
)
=
*
(
curKey
);
}
curDB2
+=
len
;
}
else
{
if
(
strncmp
(
fieldCharSet
->
csname
,
"utf8"
,
sizeof
(
"utf8"
))
==
0
)
{
/* The MySQL charset is UTF8 but we are converting to graphic on DB2. Divide number of UTF8 bytes
by 3 to get the number of characters, then multiple by 2 for double-byte graphic.*/
endOfMinPtr
=
(
char
*
)
memchr
(
tempMinPtr
,
field
->
charset
()
->
min_sort_char
,
tempLen
);
if
(
endOfMinPtr
)
endOfLiteralPtr
=
tempPtr
+
(((
uint32_t
)((
endOfMinPtr
-
tempMinPtr
))
/
3
)
*
2
);
*
(
curDB2
++
)
=
0xEF
;
*
(
curDB2
++
)
=
0xBF
;
*
(
curDB2
++
)
=
0xBF
;
}
curKey
+=
len
;
}
convertedBytes
=
curDB2
-
db2Data
;
}
else
{
/* The DB2 data type is graphic or vargraphic, and we are not converting from UTF8 to graphic. */
endOfMinPtr
=
(
char
*
)
wmemchr
((
wchar_t
*
)
tempMinPtr
,
field
->
charset
()
->
min_sort_char
,
tempLen
/
2
);
if
(
endOfMinPtr
)
endOfLiteralPtr
=
tempPtr
+
(
endOfMinPtr
-
tempMinPtr
);
{
memcpy
(
db2Data
,
keyData
,
inLen
);
convertedBytes
=
inLen
;
}
rc
=
0
;
}
/* Enforce here that a partial is only allowed on the last field position
of the key composite */
if
(
endOfLiteralPtr
)
else
if
(
db2Field
.
getCCSID
()
==
13488
)
{
if
((
partsInUse
+
1
)
<
minKeyCnt
)
DBUG_ASSERT
(
inLen
<=
outLen
);
if
(
strcmp
(
field
->
charset
()
->
name
,
"ucs2_bin"
)
&&
strcmp
(
field
->
charset
()
->
name
,
"ucs2_general_ci"
))
{
rc
=
HA_POS_ERROR
;
break
;
const
char
*
end
=
keyData
+
inLen
;
const
uint16
*
curKey
=
(
uint16
*
)
keyData
;
uint16
*
curDB2
=
(
uint16
*
)
db2Data
;
uint16
min
=
field
->
charset
()
->
min_sort_char
;
while
(
curKey
<
(
uint16
*
)
end
)
{
if
(
*
curKey
!=
min
)
*
curDB2
=
*
curKey
;
else
*
curDB2
=
0xFFFF
;
++
curKey
;
++
curDB2
;
}
endByte
=
endOfLiteralPtr
-
tempPtr
;
/* We're making an assumption that if MySQL gives us a partial key,
the length of the partial is the same for both the min_key and max_key. */
}
else
{
memcpy
(
db2Data
,
keyData
,
inLen
);
}
convertedBytes
=
inLen
;
rc
=
0
;
}
else
{
rc
=
convertFieldChars
(
toDB2
,
field
->
field_index
,
keyData
,
db2Data
,
inLen
,
outLen
,
&
convertedBytes
,
true
);
if
(
rc
==
DB2I_ERR_ILL_CHAR
)
{
// If an illegal character is encountered, we fill the remainder
// of the key with 0x00. This was implemented as a corollary to
// Bug#45012, though it should probably remain even after that
// bug is fixed.
memset
(
db2Data
+
convertedBytes
,
0x00
,
outLen
-
convertedBytes
);
convertedBytes
=
outLen
;
rc
=
0
;
}
}
if
(
!
rc
&&
(
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARCHAR
))
{
*
(
uint16
*
)(
db2Data
-
sizeof
(
uint16
))
=
convertedBytes
/
(
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
?
2
:
1
);
}
}
else
// Non-character fields
{
rc
=
convertMySQLtoDB2
(
field
,
db2Field
,
literalPtr
,
(
uchar
*
)
minPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
));
}
if
(
rc
!=
0
)
break
;
litDefPtr
->
Offset
=
(
uint32_t
)(
literalPtr
-
literalsPtr
);
litDefPtr
->
Length
=
db2Field
.
getByteLengthInRecord
();
literalPtr
=
literalPtr
+
litDefPtr
->
Length
;
// Bump pointer for next literal
}
/* If there is a max_key value for this field, and if the max_key value is
...
...
@@ -389,28 +470,168 @@ ha_rows ha_ibmdb2i::records_in_range(uint inx,
/*
Convert the literal to DB2 format
*/
if
((
field
->
type
()
!=
MYSQL_TYPE_BIT
)
&&
// Don't do conversion on BIT data
(
field
->
charset
()
!=
&
my_charset_bin
)
&&
// Don't do conversion on BINARY data
(
litDefPtr
->
DataType
==
QMY_CHAR
||
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_GRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
))
{
// We need to handle char fields in a special way in order to account
// for partial keys. Refer to the note above for a description of the
// basic design.
char
*
keyData
=
maxPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
);
char
*
db2Data
=
literalPtr
;
uint16
outLen
=
db2Field
.
getByteLengthInRecord
();
uint16
inLen
;
if
(
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
)
{
inLen
=
*
(
uint8
*
)
keyData
+
((
*
(
uint8
*
)(
keyData
+
1
))
<<
8
);
keyData
+=
2
;
outLen
-=
sizeof
(
uint16
);
db2Data
+=
sizeof
(
uint16
);
}
else
{
inLen
=
field
->
max_display_length
();
}
size_t
convertedBytes
;
if
(
db2Field
.
getCCSID
()
==
1208
)
{
if
(
strcmp
(
field
->
charset
()
->
name
,
"utf8_bin"
))
{
const
char
*
end
=
keyData
+
inLen
;
const
char
*
curKey
=
keyData
;
char
*
curDB2
=
db2Data
;
uint32
max
=
field
->
charset
()
->
max_sort_char
;
while
(
curKey
<
end
&&
(
curDB2
<
db2Data
+
outLen
-
3
))
{
my_wc_t
temp
;
int
len
=
field
->
charset
()
->
cset
->
mb_wc
(
field
->
charset
(),
&
temp
,
(
const
uchar
*
)
curKey
,
(
const
uchar
*
)
end
);
if
(
temp
!=
max
)
{
DBUG_ASSERT
(
len
<=
3
);
switch
(
len
)
{
case
3
:
*
(
curDB2
+
2
)
=
*
(
curKey
+
2
);
case
2
:
*
(
curDB2
+
1
)
=
*
(
curKey
+
1
);
case
1
:
*
(
curDB2
)
=
*
(
curKey
);
}
curDB2
+=
len
;
}
else
{
*
(
curDB2
++
)
=
0xE4
;
*
(
curDB2
++
)
=
0xB6
;
*
(
curDB2
++
)
=
0xBF
;
}
curKey
+=
len
;
}
convertedBytes
=
curDB2
-
db2Data
;
}
else
{
DBUG_ASSERT
(
inLen
<=
outLen
);
memcpy
(
db2Data
,
keyData
,
inLen
);
convertedBytes
=
inLen
;
}
rc
=
0
;
}
else
if
(
db2Field
.
getCCSID
()
==
13488
)
{
if
(
strcmp
(
field
->
charset
()
->
name
,
"ucs2_bin"
)
&&
strcmp
(
field
->
charset
()
->
name
,
"ucs2_general_ci"
))
{
char
*
end
=
keyData
+
inLen
;
uint16
*
curKey
=
(
uint16
*
)
keyData
;
uint16
*
curDB2
=
(
uint16
*
)
db2Data
;
uint16
max
=
field
->
charset
()
->
max_sort_char
;
while
(
curKey
<
(
uint16
*
)
end
)
{
if
(
*
curKey
!=
max
)
*
curDB2
=
*
curKey
;
else
*
curDB2
=
0x4DBF
;
++
curKey
;
++
curDB2
;
}
}
else
{
memcpy
(
db2Data
,
keyData
,
outLen
);
}
rc
=
0
;
}
else
{
size_t
substituteChars
=
0
;
rc
=
convertFieldChars
(
toDB2
,
field
->
field_index
,
keyData
,
db2Data
,
inLen
,
outLen
,
&
convertedBytes
,
true
,
&
substituteChars
);
if
(
rc
==
DB2I_ERR_ILL_CHAR
)
{
// If an illegal character is encountered, we fill the remainder
// of the key with 0xFF. This was implemented to work around
// Bug#45012, though it should probably remain even after that
// bug is fixed.
memset
(
db2Data
+
convertedBytes
,
0xFF
,
outLen
-
convertedBytes
);
rc
=
0
;
}
else
if
((
substituteChars
&&
(
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_CHAR
))
||
strcmp
(
field
->
charset
()
->
name
,
"cp1251_bulgarian_ci"
)
==
0
)
{
// When iconv translates the max_sort_char with a substitute
// character, we have no way to know whether this affects
// the sort order of the key. Therefore, to be safe, when
// we know that substitute characters have been used in a
// single-byte string, we traverse the translated key
// in reverse, replacing substitue characters with 0xFF, which
// always sorts with the greatest weight in DB2 sort sequences.
// cp1251_bulgarian_ci is also handled this way because the
// max_sort_char is a control character which does not sort
// equivalently in DB2.
DBUG_ASSERT
(
inLen
==
outLen
);
char
*
tmpKey
=
keyData
+
inLen
-
1
;
char
*
tmpDB2
=
db2Data
+
outLen
-
1
;
while
(
*
tmpKey
==
field
->
charset
()
->
max_sort_char
&&
*
tmpDB2
!=
0xFF
)
{
*
tmpDB2
=
0xFF
;
--
tmpKey
;
--
tmpDB2
;
}
}
}
if
(
!
rc
&&
(
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARCHAR
))
{
*
(
uint16
*
)(
db2Data
-
sizeof
(
uint16
))
=
outLen
/
(
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
?
2
:
1
);
}
}
else
{
rc
=
convertMySQLtoDB2
(
field
,
db2Field
,
literalPtr
,
(
uchar
*
)
maxPtr
+
((
curKey
.
key_part
[
partsInUse
].
null_bit
)
?
1
:
0
));
}
if
(
rc
!=
0
)
break
;
litDefPtr
->
Offset
=
(
uint32_t
)(
literalPtr
-
literalsPtr
);
litDefPtr
->
Length
=
db2Field
.
getByteLengthInRecord
();
tempLen
=
litDefPtr
->
Length
;
/*
Now convert a character or graphic value.
*/
if
((
field
->
type
()
!=
MYSQL_TYPE_BIT
)
&&
(
litDefPtr
->
DataType
==
QMY_CHAR
||
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_GRAPHIC
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
))
{
if
(
litDefPtr
->
DataType
==
QMY_VARCHAR
||
litDefPtr
->
DataType
==
QMY_VARGRAPHIC
)
{
tempPtr
=
literalPtr
+
sizeof
(
uint16
);
}
else
tempPtr
=
literalPtr
;
}
literalPtr
=
literalPtr
+
litDefPtr
->
Length
;
// Bump pointer for next literal
}
boundsPtr
->
HiBound
.
Position
=
literalCnt
;
...
...
storage/ibmdb2i/ha_ibmdb2i.h
View file @
1eb64fa6
...
...
@@ -383,7 +383,15 @@ private:
int32
prepareWriteBufferForLobs
();
uint32
adjustLobBuffersForRead
();
bool
lobFieldsRequested
();
int
convertFieldChars
(
enum_conversionDirection
direction
,
uint16
fieldID
,
const
char
*
input
,
char
*
output
,
size_t
ilen
,
size_t
olen
,
size_t
*
outDataLen
);
int
convertFieldChars
(
enum_conversionDirection
direction
,
uint16
fieldID
,
const
char
*
input
,
char
*
output
,
size_t
ilen
,
size_t
olen
,
size_t
*
outDataLen
,
bool
tacitErrors
=
FALSE
,
size_t
*
substChars
=
NULL
);
/**
Fast integer log2 function
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment