Commit 573d9e47 authored by unknown's avatar unknown

Bug #13975: "same string" + 0 has 2 different results

  The 'decimals' member of Item_func was being improperly initialized,
  which resulted in improper results when handling large numeric values.


mysql-test/r/func_str.result:
  Add test results
mysql-test/t/func_str.test:
  Add new regression test
sql/item_strfunc.h:
  Remove unnecessary reset of decimals in Item_func_conv::fix_length_and_dec().
parent 74183117
...@@ -1046,4 +1046,10 @@ cast(ltrim(' 20.06 ') as decimal(19,2)) ...@@ -1046,4 +1046,10 @@ cast(ltrim(' 20.06 ') as decimal(19,2))
select cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2)); select cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2));
cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2)) cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2))
20.06 20.06
select conv("18383815659218730760",10,10) + 0;
conv("18383815659218730760",10,10) + 0
1.8383815659219e+19
select "18383815659218730760" + 0;
"18383815659218730760" + 0
1.8383815659219e+19
End of 5.0 tests End of 5.0 tests
...@@ -698,4 +698,10 @@ select cast(rtrim(' 20.06 ') as decimal(19,2)); ...@@ -698,4 +698,10 @@ select cast(rtrim(' 20.06 ') as decimal(19,2));
select cast(ltrim(' 20.06 ') as decimal(19,2)); select cast(ltrim(' 20.06 ') as decimal(19,2));
select cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2)); select cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2));
#
# Bug #13975: "same string" + 0 has 2 different results
#
select conv("18383815659218730760",10,10) + 0;
select "18383815659218730760" + 0;
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -542,7 +542,7 @@ public: ...@@ -542,7 +542,7 @@ public:
void fix_length_and_dec() void fix_length_and_dec()
{ {
collation.set(default_charset()); collation.set(default_charset());
decimals=0; max_length=64; max_length= 64;
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment