| Bug #16002 | PARTITION BY RANGE(bigint unsigned) is broken: values >2G treated as negative | ||
|---|---|---|---|
| Submitted: | 27 Dec 2005 6:46 | Modified: | 15 Jun 2006 13:09 |
| Reporter: | Sergey Petrunya | ||
| Status: | Closed | ||
| Category: | Server: Partition | Severity: | S3 (Non-critical) |
| Version: | 5.1-bk | OS: | |
| Assigned to: | Mikael Ronstrom | Target Version: | |
[27 Dec 2005 6:46]
Sergey Petrunya
[27 Dec 2005 14:07]
Aleksey Kishkin
mysql> create table w1 (a bigint unsigned) partition by range(a) ( partition p0 values less than (1), partition p1 values less than (2) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into w1 values (0xffffffffffffffff); Query OK, 1 row affected (0.00 sec) mysql> insert into w1 values (8); ERROR 1500 (HY000): Table has no partition for value 8 mysql> select * from w1; +----------------------+ | a | +----------------------+ | 18446744073709551615 | +----------------------+ 1 row in set (0.00 sec)
[15 Apr 2006 16:54]
Mikael Ronstrom
An interesting bug. It had some implications on how things were checked at table creation and table altering. In principal one has to keep track of whether values are unsigned or signed or not. It's a first step towards supporting partitioning functions of more general type than just returning integers. In principal all places where one does comparisons and show commands one has to check for whether signed or unsigned partition function. When a partition function is unsigned it is also necessary that we don't have VALUES IN or VALUES LESS THAN constants that are negative. In this case we should report an error. This is a new feature when this patch is completed. Another important thing to document is that only RANGE and LIST partitions will check for sign. Hash partitions will always treat functions is signed integers and then apply the hash function on this value.
[4 Jun 2006 12:34]
Sergey Petrunya
We'll need to test that partition pruning works for unsigned fields and unsigned partitioning functions. That will be done in BUG#20257
[14 Jun 2006 23:05]
Mikael Ronstrom
With this patch partition functions that are unsigned are supported Will be available in 5.1.12
[15 Jun 2006 13:09]
Jon Stephens
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.
If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information
about accessing the source trees is available at
http://www.mysql.com/doc/en/Installing_source_tree.html
Additional info:
Documented bugfix in 5.1.12 changelog; closed.
