summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjimw@mysql.com <>2006-05-18 10:34:01 -0700
committerjimw@mysql.com <>2006-05-18 10:34:01 -0700
commit7d54b004a2a1af9023c5b95cb6d4e66063a964d7 (patch)
tree5fe3339eff5f8f0de92f577987df50fcfbdaf763
parent894092becf2b5aa74d22c9beea148c93b1228950 (diff)
downloadmariadb-git-7d54b004a2a1af9023c5b95cb6d4e66063a964d7.tar.gz
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.
-rw-r--r--mysql-test/r/func_str.result6
-rw-r--r--mysql-test/t/func_str.test6
-rw-r--r--sql/item_strfunc.h2
3 files changed, 13 insertions, 1 deletions
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index 6f8269bdcbd..a17661d26d0 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -1046,4 +1046,10 @@ cast(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))
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
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index dee06231deb..7f809dbc4a1 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -698,4 +698,10 @@ select cast(rtrim(' 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));
+#
+# Bug #13975: "same string" + 0 has 2 different results
+#
+select conv("18383815659218730760",10,10) + 0;
+select "18383815659218730760" + 0;
+
--echo End of 5.0 tests
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index 7d7b62df0dc..90d421a2c68 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -542,7 +542,7 @@ public:
void fix_length_and_dec()
{
collation.set(default_charset());
- decimals=0; max_length=64;
+ max_length= 64;
}
};