diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-12-11 16:01:37 +0200 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-12-11 16:01:37 +0200 |
commit | f8f69c14b7d2b81ee3ec59a26ac4153724fcc506 (patch) | |
tree | ed971542355cdfbc34d3dc9c24cedc05a40d4fd5 | |
parent | e691523422136c11f9a029e0add3445e9553423c (diff) | |
parent | 6374baf7c15447cc39af07590759bcabba01705b (diff) | |
download | mariadb-git-f8f69c14b7d2b81ee3ec59a26ac4153724fcc506.tar.gz |
Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0
into sinisa.nasamreza.org:/mnt/work/mysql-4.0
sql/field.cc:
Auto merged
-rw-r--r-- | mysql-test/r/type_decimal.result | 6 | ||||
-rw-r--r-- | mysql-test/t/type_decimal.test | 6 | ||||
-rw-r--r-- | sql/field.cc | 4 |
3 files changed, 14 insertions, 2 deletions
diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result index b74765696a2..df5402c89a8 100644 --- a/mysql-test/r/type_decimal.result +++ b/mysql-test/r/type_decimal.result @@ -363,3 +363,9 @@ CREATE TABLE t1 (a_dec DECIMAL(-2,1)); Too big column length for column 'a_dec' (max = 255). Use BLOB instead CREATE TABLE t1 (a_dec DECIMAL(-1,1)); Too big column length for column 'a_dec' (max = 255). Use BLOB instead +create table t1(a decimal(10,4)); +insert into t1 values ("+0000100000000"); +select * from t1; +a +9999999.9999 +drop table t1; diff --git a/mysql-test/t/type_decimal.test b/mysql-test/t/type_decimal.test index 7aedc051905..14d9625710b 100644 --- a/mysql-test/t/type_decimal.test +++ b/mysql-test/t/type_decimal.test @@ -240,3 +240,9 @@ CREATE TABLE t1 (a_dec DECIMAL(-1,0)); CREATE TABLE t1 (a_dec DECIMAL(-2,1)); --error 1074 CREATE TABLE t1 (a_dec DECIMAL(-1,1)); + +# Zero prepend overflow bug +create table t1(a decimal(10,4)); +insert into t1 values ("+0000100000000"); +select * from t1; +drop table t1; diff --git a/sql/field.cc b/sql/field.cc index d43089ec35c..72a9e9ad3da 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -632,7 +632,7 @@ void Field_decimal::store(const char *from,uint len) if (zerofill) { left_wall=to-1; - while (pos != left_wall) // Fill with zeros + while (pos > left_wall) // Fill with zeros *pos--='0'; } else @@ -640,7 +640,7 @@ void Field_decimal::store(const char *from,uint len) left_wall=to+(sign_char != 0)-1; if (!expo_sign_char) // If exponent was specified, ignore prezeros { - for (;pos != left_wall && pre_zeros_from !=pre_zeros_end; + for (;pos > left_wall && pre_zeros_from !=pre_zeros_end; pre_zeros_from++) *pos--= '0'; } |