Merge mysql.com:/home/ram/work/mysql-5.1-engines
into mysql.com:/home/ram/work/b29258/b29258.5.1
This commit is contained in:
commit
2b65845a99
@ -1307,4 +1307,51 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXTENDED' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXTENDED' at line 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551615)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (0), (18446744073709551614);
|
||||||
|
INSERT INTO t1 VALUES (18446744073709551615);
|
||||||
|
ERROR HY000: Table has no partition for value 18446744073709551615
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551614),
|
||||||
|
PARTITION p3 VALUES LESS THAN MAXVALUE
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (-1), (0), (18446744073709551613),
|
||||||
|
(18446744073709551614), (18446744073709551615);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 's1' at row 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
s1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
18446744073709551613
|
||||||
|
18446744073709551614
|
||||||
|
18446744073709551615
|
||||||
|
SELECT * FROM t1 WHERE s1 = 0;
|
||||||
|
s1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
SELECT * FROM t1 WHERE s1 = 18446744073709551614;
|
||||||
|
s1
|
||||||
|
18446744073709551614
|
||||||
|
SELECT * FROM t1 WHERE s1 = 18446744073709551615;
|
||||||
|
s1
|
||||||
|
18446744073709551615
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551615),
|
||||||
|
PARTITION p3 VALUES LESS THAN MAXVALUE
|
||||||
|
);
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1556,4 +1556,42 @@ ALTER TABLE t1 OPTIMIZE PARTITION p1 EXTENDED;
|
|||||||
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #29258: Partitions: search fails for maximum unsigned bigint
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551615)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (0), (18446744073709551614);
|
||||||
|
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||||
|
INSERT INTO t1 VALUES (18446744073709551615);
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551614),
|
||||||
|
PARTITION p3 VALUES LESS THAN MAXVALUE
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (-1), (0), (18446744073709551613),
|
||||||
|
(18446744073709551614), (18446744073709551615);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t1 WHERE s1 = 0;
|
||||||
|
SELECT * FROM t1 WHERE s1 = 18446744073709551614;
|
||||||
|
SELECT * FROM t1 WHERE s1 = 18446744073709551615;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
|
PARTITION BY RANGE (s1) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (0),
|
||||||
|
PARTITION p1 VALUES LESS THAN (1),
|
||||||
|
PARTITION p2 VALUES LESS THAN (18446744073709551615),
|
||||||
|
PARTITION p3 VALUES LESS THAN MAXVALUE
|
||||||
|
);
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -524,6 +524,13 @@ bool partition_info::check_range_constants()
|
|||||||
current_largest= part_range_value;
|
current_largest= part_range_value;
|
||||||
range_int_array[i]= part_range_value;
|
range_int_array[i]= part_range_value;
|
||||||
}
|
}
|
||||||
|
else if (defined_max_value &&
|
||||||
|
current_largest == part_range_value &&
|
||||||
|
part_range_value == LONGLONG_MAX &&
|
||||||
|
i == (no_parts - 1))
|
||||||
|
{
|
||||||
|
range_int_array[i]= part_range_value;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0));
|
my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0));
|
||||||
|
@ -2834,8 +2834,8 @@ int get_partition_id_range(partition_info *part_info,
|
|||||||
loc_part_id++;
|
loc_part_id++;
|
||||||
*part_id= (uint32)loc_part_id;
|
*part_id= (uint32)loc_part_id;
|
||||||
if (loc_part_id == max_partition &&
|
if (loc_part_id == max_partition &&
|
||||||
range_array[loc_part_id] != LONGLONG_MAX &&
|
part_func_value >= range_array[loc_part_id] &&
|
||||||
part_func_value >= range_array[loc_part_id])
|
!part_info->defined_max_value)
|
||||||
DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND);
|
DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND);
|
||||||
|
|
||||||
DBUG_PRINT("exit",("partition: %d", *part_id));
|
DBUG_PRINT("exit",("partition: %d", *part_id));
|
||||||
@ -2941,7 +2941,13 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info,
|
|||||||
}
|
}
|
||||||
if (left_endpoint)
|
if (left_endpoint)
|
||||||
{
|
{
|
||||||
if (part_func_value >= range_array[loc_part_id])
|
longlong bound= range_array[loc_part_id];
|
||||||
|
/*
|
||||||
|
In case of PARTITION p VALUES LESS THAN MAXVALUE
|
||||||
|
the maximum value is in the current partition.
|
||||||
|
*/
|
||||||
|
if (part_func_value > bound ||
|
||||||
|
(part_func_value == bound && !part_info->defined_max_value))
|
||||||
loc_part_id++;
|
loc_part_id++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user