BUG#15407: Crash if error in subpartition definition
mysql-test/r/partition.result: New test cases mysql-test/t/partition.test: New test cases sql/sql_yacc.yy: New error checks
This commit is contained in:
parent
402ff5523e
commit
aa451a0e07
@ -464,4 +464,16 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) DEFAULT NULL
|
`a` int(11) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM)
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int, b int)
|
||||||
|
partition by range (a)
|
||||||
|
subpartition by hash(a)
|
||||||
|
(partition p0 values less than (0) (subpartition sp0),
|
||||||
|
partition p1 values less than (1));
|
||||||
|
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near ')' at line 5
|
||||||
|
create table t1 (a int, b int)
|
||||||
|
partition by range (a)
|
||||||
|
subpartition by hash(a)
|
||||||
|
(partition p0 values less than (0),
|
||||||
|
partition p1 values less than (1) (subpartition sp0));
|
||||||
|
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '))' at line 5
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -588,4 +588,21 @@ show create table t1;
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG 15407 Crash with subpartition
|
||||||
|
#
|
||||||
|
--error 1064
|
||||||
|
create table t1 (a int, b int)
|
||||||
|
partition by range (a)
|
||||||
|
subpartition by hash(a)
|
||||||
|
(partition p0 values less than (0) (subpartition sp0),
|
||||||
|
partition p1 values less than (1));
|
||||||
|
|
||||||
|
--error 1064
|
||||||
|
create table t1 (a int, b int)
|
||||||
|
partition by range (a)
|
||||||
|
subpartition by hash(a)
|
||||||
|
(partition p0 values less than (0),
|
||||||
|
partition p1 values less than (1) (subpartition sp0));
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -3793,7 +3793,15 @@ part_bit_expr:
|
|||||||
;
|
;
|
||||||
|
|
||||||
opt_sub_partition:
|
opt_sub_partition:
|
||||||
/* empty */ {}
|
/* empty */
|
||||||
|
{
|
||||||
|
if (Lex->part_info->no_subparts != 0 &&
|
||||||
|
!Lex->part_info->use_default_subpartitions)
|
||||||
|
{
|
||||||
|
yyerror(ER(ER_PARTITION_WRONG_NO_SUBPART_ERROR));
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
| '(' sub_part_list ')'
|
| '(' sub_part_list ')'
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
@ -3809,6 +3817,11 @@ opt_sub_partition:
|
|||||||
}
|
}
|
||||||
else if (part_info->count_curr_subparts > 0)
|
else if (part_info->count_curr_subparts > 0)
|
||||||
{
|
{
|
||||||
|
if (part_info->partitions.elements > 1)
|
||||||
|
{
|
||||||
|
yyerror(ER(ER_PARTITION_WRONG_NO_SUBPART_ERROR));
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
part_info->no_subparts= part_info->count_curr_subparts;
|
part_info->no_subparts= part_info->count_curr_subparts;
|
||||||
}
|
}
|
||||||
part_info->count_curr_subparts= 0;
|
part_info->count_curr_subparts= 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user