Bug #9669 Ordering on IF function with FROM_UNIXTIME function fails

Submitted: 6 Apr 2005 7:33 Modified: 11 Jun 2005 2:11
Reporter: Taco van den Broek Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S2 (Serious)
Version:5.0.3-beta-nt OS:Any (any)
Assigned to: Evgeny Potemkin CPU Architecture:Any

[6 Apr 2005 7:33] Taco van den Broek
Description:
Suppose the following table:

CREATE TABLE `foo` (
  `foo_id` int(11) NOT NULL auto_increment,
  `bar` int(10) default NULL,
  `baz` varchar(32) NOT NULL,
  PRIMARY KEY  (`foo_id`)
) ENGINE=InnoDB;

Where the column bar contains unix timestamps and the column baz contains normal text. A query that orders by 
IF(bar IS NULL, '-', FROM_UNIXTIME(bar, '%d-%m-%Y'))
will not (correctly) order the result, whereas ordering by bar is not a problem.

How to repeat:
Create the above table, enter some test data like:
1 | 1112344747 | Here's some text
2 | 1112613381 | Text of some kind
3 | 1112708785 | Rather strange table

And run the following queries:
SELECT foo_id, IF(bar IS NULL, '-', FROM_UNIXTIME(bar, '%d-%m-%Y')) AS qux, baz FROM foo ORDER BY qux ASC;
SELECT foo_id, IF(bar IS NULL, '-', FROM_UNIXTIME(bar, '%d-%m-%Y')) AS qux, baz FROM foo ORDER BY qux DESC;

You'll get the same result twice
[13 May 2005 11:00] 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/internals/24852
[2 Jun 2005 12:41] Evgeny Potemkin
Integer overflow results in wrong calculated sortlength.
[2 Jun 2005 13:04] Evgeny Potemkin
Fixed in 5.0.7, changeset 1.1958
[11 Jun 2005 2:11] Paul DuBois
Noted in 5.0.7 changelog.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.039 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.