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