| Bug #49591 | Conditional definition of Column list partitions has the wrong version | ||
|---|---|---|---|
| Submitted: | 10 Dec 2009 16:03 | Modified: | 3 Jan 2010 17:40 |
| Reporter: | Giuseppe Maxia (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Partitions | Severity: | S2 (Serious) |
| Version: | 5.5 | OS: | Any |
| Assigned to: | Mikael Ronström | CPU Architecture: | Any |
| Tags: | column list, conditional, partition, partitioning | ||
[10 Dec 2009 16:09]
MySQL Verification Team
Thank you for the bug report. Verified as described:
miguel@quetzal2:~$ dbs/5.6/bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.0-beta-debug Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> CREATE TABLE t1 (dt date) PARTITION BY RANGE COLUMNS (dt) (PARTITION p0 VALUES LESS
-> THAN ('2009-01-01'), partition p1 values less than (MAXVALUE));
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> show create table t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`dt` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE COLUMNS(dt)
(PARTITION p0 VALUES LESS THAN ('2009-01-01') ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM) */
1 row in set (0.00 sec)
mysql>
[16 Dec 2009 18:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/94554
[17 Dec 2009 10:16]
Mattias Jonsson
This should also be considered for backporting to 5.1 due to bug#42849, which adds UNIX_TIMESTAMP as a partitioning function, to keep the timestamp data type to still be allowed to use in the partitioning expression.
[17 Dec 2009 17:30]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/94813 2926 Mikael Ronstrom 2009-12-17 BUG#49591, review fixes
[17 Dec 2009 17:37]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/94815 2927 Mikael Ronstrom 2009-12-17 [merge] Merge to mysql-trunk-bugfixing BUG#49591
[17 Dec 2009 17:41]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/94816
[17 Dec 2009 17:47]
Mikael Ronström
I fixed the column list partitioning to use at least 5.5. However one should also ensure that new functions introduced also set the proper version number, in particular I fixed this for the new function TO_SECONDS which was introduced in 5.5.
[21 Dec 2009 15:39]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091221153807-80nxoli1tw1z9bxn) (version source revid:vvaintroub@mysql.com-20091218212246-frpxcpzra8lalib0) (merge vers: 6.0.14-alpha) (pib:15)
[21 Dec 2009 15:40]
Bugs System
Pushed into 5.5.1-m2 (revid:alik@sun.com-20091221153538-ifi3mxf3y10ozxin) (version source revid:mikael@mysql.com-20091217173910-ecubxjy07if7gc05) (merge vers: 5.5.0-beta) (pib:15)
[21 Dec 2009 15:41]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20091221153659-d7bt0fh6mhhclxuf) (version source revid:vvaintroub@mysql.com-20091218211356-mvp3vmiia9yogqe1) (pib:15)
[3 Jan 2010 17:40]
Jon Stephens
Documented in the 5.5.1 changelog as follows:
When SHOW CREATE TABLE was invoked for a table that had been
created using the COLUMNS keyword or the TO_SECONDS() function,
the output contained the wrong MySQL version number in
conditional comments.
Documented in the 6.0.14 changelog as follows:
When SHOW CREATE TABLE was invoked for a table that had been
created using the TO_SECONDS() function, the output contained
the wrong MySQL version number in conditional comments.
(Due to lack of support for COLUMNS partitioning in 6.0 tree.)
Closed.

Description: when defining a range partition with the COLUMNS() clause and then asking for the CREATE TABLE statement, the server produces a conditional portion with 5.1 as minimum version to execute the SQL statement. But the minimum version in this case is 5.5, not 5.1 Example: CREATE TABLE t1 (dt date) PARTITION BY RANGE COLUMNS (dt) (PARTITION p0 VALUES LESS THAN ('2009-01-01'), partition p1 values less than (MAXVALUE)); show create table t1\G *************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `dt` date DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE COLUMNS(dt) (PARTITION p0 VALUES LESS THAN ('2009-01-01') ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM) */ It should be /*!50500 PARTITION BY RANGE COLUMNS(dt) ... /* How to repeat: DROP TABLE IF EXISTS t1; CREATE TABLE t1 (dt date) PARTITION BY RANGE COLUMNS (dt) (PARTITION p0 VALUES LESS THAN ('2009-01-01'), partition p1 values less than (MAXVALUE)); show create table t1\G Suggested fix: change the minimum version value