shantanu oak <[EMAIL PROTECTED]> wrote on 07/18/2005 01:17:57 PM:
> I am getting two different results for the same set of commands on two
> different versions of MySQL.
> Can anyone explain what the issue is?
>
> CREATE TABLE `testdecimal` (
> `rate` decimal(7,4) NOT NULL default '0.0000'
> ) ENGINE=MyISAM;
>
> INSERT INTO testdecimal SET rate=1468;
>
> select * from testdecimal;
> _____
>
> version 4.1.12
> 1468.0000
>
> version 5.0
> 999.9999
>
> Shantanu Oak
>
They fixed a bug. Count how many digits are in this number from your
4.1.12 output:
1468.0000
^^^^ ^^^^
1234 5678
8 is more than 7. That violates your definition of (7,4). What you want is
to declare (8.4) to be able to store numbers that large. The reason you
get 999.9999 with 5.0 is because that is the number closest to your target
value available for the field definition you declared.
The "old" behavior allowed an extra digit to possibly take the place of
the "sign" marker (positive or negative) and since your number was not
negative, your sign marker was "blank" which allowed your number to
overflow its definition. That is the bug they fixed.
Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine