Commit 98fd3042 authored by Mattias Jonsson's avatar Mattias Jonsson

backport of bug#45904 from mysql-pe to 5.1

sql/sql_partition.cc:
  Bug#45904 Used list_of_part_fields instead of list_of_subpart_fields to discover if KEY subpartitioning => caused failure when charset=utf8 even for subpartitioning by key, would also allow for subpartitioning by hash with utf8 erroneously
parent c4584fc6
...@@ -50,6 +50,13 @@ t1 CREATE TABLE `t1` ( ...@@ -50,6 +50,13 @@ t1 CREATE TABLE `t1` (
PARTITION p3 VALUES LESS THAN (733969) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (733969) ENGINE = MyISAM,
PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
DROP TABLE t1; DROP TABLE t1;
create table t1 (a int NOT NULL, b varchar(5) NOT NULL)
default charset=utf8
partition by list (a)
subpartition by key (b)
(partition p0 values in (1),
partition p1 values in (2));
drop table t1;
create table t1 (a int, b int, key(a)) create table t1 (a int, b int, key(a))
partition by list (a) partition by list (a)
( partition p0 values in (1), ( partition p0 values in (1),
......
...@@ -61,6 +61,17 @@ SELECT * FROM t1; ...@@ -61,6 +61,17 @@ SELECT * FROM t1;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#45904: Error when CHARSET=utf8 and subpartitioning
#
create table t1 (a int NOT NULL, b varchar(5) NOT NULL)
default charset=utf8
partition by list (a)
subpartition by key (b)
(partition p0 values in (1),
partition p1 values in (2));
drop table t1;
# #
# Bug#44059: rec_per_key on empty partition gives weird optimiser results # Bug#44059: rec_per_key on empty partition gives weird optimiser results
# #
......
...@@ -1679,7 +1679,7 @@ bool fix_partition_func(THD *thd, TABLE *table, ...@@ -1679,7 +1679,7 @@ bool fix_partition_func(THD *thd, TABLE *table,
if (((part_info->part_type != HASH_PARTITION || if (((part_info->part_type != HASH_PARTITION ||
part_info->list_of_part_fields == FALSE) && part_info->list_of_part_fields == FALSE) &&
check_part_func_fields(part_info->part_field_array, TRUE)) || check_part_func_fields(part_info->part_field_array, TRUE)) ||
(part_info->list_of_part_fields == FALSE && (part_info->list_of_subpart_fields == FALSE &&
part_info->is_sub_partitioned() && part_info->is_sub_partitioned() &&
check_part_func_fields(part_info->subpart_field_array, TRUE))) check_part_func_fields(part_info->subpart_field_array, TRUE)))
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment