Browse Source
Fixed a few bugs in hex string generation, in call to val_str for partition expressions, also made code reusable for DEFAULT handling to fix BUG#48464 by introducing function get_cs_converted_string_value, added partition_utf8 test case for UTF8 outputs
pull/374/head
Fixed a few bugs in hex string generation, in call to val_str for partition expressions, also made code reusable for DEFAULT handling to fix BUG#48464 by introducing function get_cs_converted_string_value, added partition_utf8 test case for UTF8 outputs
pull/374/head
9 changed files with 289 additions and 164 deletions
-
14BUILD/build_mccge.sh
-
44mysql-test/r/partition_column.result
-
53mysql-test/r/partition_utf8.result
-
34mysql-test/t/partition_column.test
-
42mysql-test/t/partition_utf8.test
-
1sql/mysql_priv.h
-
92sql/sql_partition.cc
-
11sql/sql_partition.h
-
162sql/sql_show.cc
@ -0,0 +1,53 @@ |
|||||
|
set names utf8; |
||||
|
create table t1 (a varchar(2) character set cp1250) |
||||
|
partition by list columns (a) |
||||
|
( partition p0 values in (0x81)); |
||||
|
show create table t1; |
||||
|
Table Create Table |
||||
|
t1 CREATE TABLE `t1` ( |
||||
|
`a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL |
||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
||||
|
/*!50100 PARTITION BY LIST COLUMNS(a) |
||||
|
(PARTITION p0 VALUES IN (_cp1250 0x81) ENGINE = MyISAM) */ |
||||
|
drop table t1; |
||||
|
create table t1 (a varchar(2) character set cp1250) |
||||
|
partition by list columns (a) |
||||
|
( partition p0 values in (0x80)); |
||||
|
show create table t1; |
||||
|
Table Create Table |
||||
|
t1 CREATE TABLE `t1` ( |
||||
|
`a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL |
||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
||||
|
/*!50100 PARTITION BY LIST COLUMNS(a) |
||||
|
(PARTITION p0 VALUES IN ('€') ENGINE = MyISAM) */ |
||||
|
drop table t1; |
||||
|
create table t1 (a varchar(1500), b varchar(1570)) |
||||
|
partition by list columns(a,b) |
||||
|
( partition p0 values in (('a','b'))); |
||||
|
ERROR HY000: The total length of the partitioning fields is too large |
||||
|
create table t1 (a varchar(1023) character set utf8 collate utf8_spanish2_ci) |
||||
|
partition by range columns(a) |
||||
|
( partition p0 values less than ('CZ'), |
||||
|
partition p1 values less than ('CH'), |
||||
|
partition p2 values less than ('D')); |
||||
|
insert into t1 values ('czz'),('chi'),('ci'),('cg'); |
||||
|
select * from t1 where a between 'cg' AND 'ci'; |
||||
|
a |
||||
|
ci |
||||
|
cg |
||||
|
drop table t1; |
||||
|
create table t1 (a varchar(2) character set ucs2) |
||||
|
partition by list columns (a) |
||||
|
(partition p0 values in (0x2020), |
||||
|
partition p1 values in ('')); |
||||
|
show create table t1; |
||||
|
Table Create Table |
||||
|
t1 CREATE TABLE `t1` ( |
||||
|
`a` varchar(2) CHARACTER SET ucs2 DEFAULT NULL |
||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
||||
|
/*!50100 PARTITION BY LIST COLUMNS(a) |
||||
|
(PARTITION p0 VALUES IN ('†') ENGINE = MyISAM, |
||||
|
PARTITION p1 VALUES IN ('') ENGINE = MyISAM) */ |
||||
|
insert into t1 values (''); |
||||
|
insert into t1 values (_ucs2 0x2020); |
||||
|
drop table t1; |
||||
@ -0,0 +1,42 @@ |
|||||
|
# Tests for Column list which requires utf8 output |
||||
|
--source include/have_partition.inc |
||||
|
set names utf8; |
||||
|
create table t1 (a varchar(2) character set cp1250) |
||||
|
partition by list columns (a) |
||||
|
( partition p0 values in (0x81)); |
||||
|
show create table t1; |
||||
|
drop table t1; |
||||
|
create table t1 (a varchar(2) character set cp1250) |
||||
|
partition by list columns (a) |
||||
|
( partition p0 values in (0x80)); |
||||
|
show create table t1; |
||||
|
drop table t1; |
||||
|
|
||||
|
# |
||||
|
# BUG#48164, too long partition fields causes crash |
||||
|
# |
||||
|
--error ER_PARTITION_FIELDS_TOO_LONG |
||||
|
create table t1 (a varchar(1500), b varchar(1570)) |
||||
|
partition by list columns(a,b) |
||||
|
( partition p0 values in (('a','b'))); |
||||
|
|
||||
|
create table t1 (a varchar(1023) character set utf8 collate utf8_spanish2_ci) |
||||
|
partition by range columns(a) |
||||
|
( partition p0 values less than ('CZ'), |
||||
|
partition p1 values less than ('CH'), |
||||
|
partition p2 values less than ('D')); |
||||
|
insert into t1 values ('czz'),('chi'),('ci'),('cg'); |
||||
|
select * from t1 where a between 'cg' AND 'ci'; |
||||
|
drop table t1; |
||||
|
|
||||
|
# |
||||
|
# BUG#48163, Dagger in UCS2 not working as partition value |
||||
|
# |
||||
|
create table t1 (a varchar(2) character set ucs2) |
||||
|
partition by list columns (a) |
||||
|
(partition p0 values in (0x2020), |
||||
|
partition p1 values in ('')); |
||||
|
show create table t1; |
||||
|
insert into t1 values (''); |
||||
|
insert into t1 values (_ucs2 0x2020); |
||||
|
drop table t1; |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue