Loading mysql-test/r/partition_hash.result +6 −0 Original line number Diff line number Diff line Loading @@ -64,3 +64,9 @@ primary key(a,b)) partition by key (a) (partition x1); drop table t1; CREATE TABLE t1 (f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM' PARTITION BY HASH(f1) PARTITIONS 2; INSERT INTO t1 SET f1 = 0 - 1, f2 = '#######'; select * from t1; f1 f2 -1 ####### drop table t1; mysql-test/t/partition_hash.test +9 −0 Original line number Diff line number Diff line Loading @@ -75,3 +75,12 @@ partition by key (a) (partition x1); drop table t1; # # Bug# 15968 - crash when INSERT with f1 = -1 into partition by hash(f1) # CREATE TABLE t1 (f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM' PARTITION BY HASH(f1) PARTITIONS 2; INSERT INTO t1 SET f1 = 0 - 1, f2 = '#######'; select * from t1; drop table t1; sql/sql_partition.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2332,7 +2332,8 @@ static uint32 get_part_id_hash(uint no_parts, Item *part_expr) { DBUG_ENTER("get_part_id_hash"); DBUG_RETURN((uint32)(part_expr->val_int() % no_parts)); longlong int_hash_id= part_expr->val_int() % no_parts; DBUG_RETURN(int_hash_id < 0 ? -int_hash_id : int_hash_id); } Loading Loading
mysql-test/r/partition_hash.result +6 −0 Original line number Diff line number Diff line Loading @@ -64,3 +64,9 @@ primary key(a,b)) partition by key (a) (partition x1); drop table t1; CREATE TABLE t1 (f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM' PARTITION BY HASH(f1) PARTITIONS 2; INSERT INTO t1 SET f1 = 0 - 1, f2 = '#######'; select * from t1; f1 f2 -1 ####### drop table t1;
mysql-test/t/partition_hash.test +9 −0 Original line number Diff line number Diff line Loading @@ -75,3 +75,12 @@ partition by key (a) (partition x1); drop table t1; # # Bug# 15968 - crash when INSERT with f1 = -1 into partition by hash(f1) # CREATE TABLE t1 (f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM' PARTITION BY HASH(f1) PARTITIONS 2; INSERT INTO t1 SET f1 = 0 - 1, f2 = '#######'; select * from t1; drop table t1;
sql/sql_partition.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2332,7 +2332,8 @@ static uint32 get_part_id_hash(uint no_parts, Item *part_expr) { DBUG_ENTER("get_part_id_hash"); DBUG_RETURN((uint32)(part_expr->val_int() % no_parts)); longlong int_hash_id= part_expr->val_int() % no_parts; DBUG_RETURN(int_hash_id < 0 ? -int_hash_id : int_hash_id); } Loading