Michael Widenius wrote:
> 
> Hi!
> 
> >>>>> "Colin" == Colin Faber <[EMAIL PROTECTED]> writes:
> 
> >> Description:
> 
> Colin>  When attempting to select a result set by subtracting the value
> Colin>  of an unsigned INT column against UNIX_TIMESTAMP() the result set
> Colin>  is invalid.
> 
> >> How-To-Repeat:
> Colin>  Test case:
> 
> mysql> create table t (ts int unsigned not null); insert into t values (1008884715), 
>(1008886691), (1008887691);
> Colin>  Query OK, 0 rows affected (0.05 sec)
> 
> Colin>  Query OK, 3 rows affected (0.00 sec)
> Colin>  Records: 3  Duplicates: 0  Warnings: 0
> 
> mysql> select (ts - unix_timestamp()) from t;
> Colin>  +-------------------------+
> Colin>  | (ts - unix_timestamp()) |
> Colin>  +-------------------------+
> Colin>  |    18446744073709551463 |
> Colin>  |                    1823 |
> Colin>  |                    2823 |
> Colin>  +-------------------------+
> Colin>  3 rows in set (0.01 sec)
> 
> The above is correct;  You are subtracting two unsigned values, and
> the result is unsigned.  Compare how C works!
> 
> <cut>
> 
> Colin>  As shown above this can be correct by using a variable which I believe 
>recasts the
> Colin>  result set as a signed int.
> 
> Colin>  This problem first appeared in 4.0.0-alpha and has been verified by multiple 
>people.
> 
> Yes; The difference is that MySQL 4.0 can now correctly handle
> unsigned values; Something that was wrong in 3.23.
> 
> If we would try to fix this, then we would not anymore have full
> support of 64 bit values in MySQL.
> 
> The proper way to fix this is to add a cast operator for unsigned to
> signed and vice versa.  We shall look into doing this.

Agreed; But isn't this a case where an expected result of zero is more
important that the unexpected `true' 
result of `18446744073709551463'?

I don't know how other people feel about this but I personally think a
NULL value, zero value
or error returned would be a better solution.




> 
> Regards,
> Monty
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

-- 
Colin Faber
(303) 859-1491
fpsn.net, Inc.

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to