| Bug #27760 | The least() function used on date local vars in a stored proc seems busted. | ||
|---|---|---|---|
| Submitted: | 11 Apr 2007 15:50 | Modified: | 13 Apr 2007 22:51 |
| Reporter: | David Sahagian | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Stored Routines | Severity: | S1 (Critical) |
| Version: | 5.0.40-BK, 5.0.27-community-nt | OS: | Windows (XP, Linux) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | least() | ||
[11 Apr 2007 15:50]
David Sahagian
[12 Apr 2007 6:28]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described with latest 5.0.40-BK on Linux:
mysql> DROP PROCEDURE IF EXISTS dvs_test_least ;
Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> DELIMITER <eoproc>
mysql> CREATE PROCEDURE dvs_test_least ()
-> BEGIN
-> /*
/*> Why are "a_then_b" and "b_then_a" DIFFERENT ?
/*> */
-> declare v_a date ;
-> declare v_b date ;
->
-> set v_a = '2007-04-10' ;
-> set v_b = '2007-04-11' ;
->
-> select
-> version() as vers,
-> v_a as a,
-> v_b as b,
-> least( v_a, v_b ) as a_then_b,
-> least( v_b, v_a ) as b_then_a
-> ;
-> END
-> <eoproc>
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> call dvs_test_least();
+--------+------------+------------+------------+------------+
| vers | a | b | a_then_b | b_then_a |
+--------+------------+------------+------------+------------+
| 5.0.40 | 2007-04-10 | 2007-04-11 | 2007-04-11 | 2007-04-10 |
+--------+------------+------------+------------+------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
mysql> select least('2007-04-11', '2007-04-10') a_then_b;
+------------+
| a_then_b |
+------------+
| 2007-04-10 |
+------------+
1 row in set (0.00 sec)
mysql> select least('2007-04-10', '2007-04-11') b_then_a;
+------------+
| b_then_a |
+------------+
| 2007-04-10 |
+------------+
1 row in set (0.01 sec)
This is a weird bug.
[13 Apr 2007 22:51]
Sergei Golubchik
duplicate of bug#27759
