mirror of
https://github.com/MariaDB/server.git
synced 2025-07-08 17:02:21 +03:00
Allow storing "+456" then decimal declared unsigned
mysql-test/r/type_decimal.result: Change test results according to this sql/field.cc: Allow storing "+1234" in unsigned decimal as Monty asked. Old code is left for a while
This commit is contained in:
@ -199,15 +199,15 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
0.00
|
0.00
|
||||||
0.00
|
0.00
|
||||||
0.00
|
+0.00
|
||||||
01.00
|
|
||||||
01.00
|
01.00
|
||||||
|
+01.00
|
||||||
0.00
|
0.00
|
||||||
0.00
|
0.00
|
||||||
0.10
|
+0.10
|
||||||
0.10
|
0.10
|
||||||
00000001.00
|
00000001.00
|
||||||
00000001.00
|
+0000001.00
|
||||||
0.00
|
0.00
|
||||||
99999999.99
|
99999999.99
|
||||||
99999999.99
|
99999999.99
|
||||||
@ -316,9 +316,9 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
1
|
+1
|
||||||
01
|
01
|
||||||
0000000001
|
+000000001
|
||||||
1234567890
|
1234567890
|
||||||
9999999999
|
9999999999
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
11
sql/field.cc
11
sql/field.cc
@ -431,8 +431,9 @@ void Field_decimal::store(const char *from,uint len)
|
|||||||
{
|
{
|
||||||
sign_char= *from++;
|
sign_char= *from++;
|
||||||
/*
|
/*
|
||||||
Unsigned can't have any flag. So we'll just drop "+"
|
We allow "+" for unsigned decimal unless defined different
|
||||||
and will overflow on "-"
|
Both options allowed as one may wish not to have "+" for unsigned numbers
|
||||||
|
because of data processing issues
|
||||||
*/
|
*/
|
||||||
if (unsigned_flag)
|
if (unsigned_flag)
|
||||||
{
|
{
|
||||||
@ -441,8 +442,14 @@ void Field_decimal::store(const char *from,uint len)
|
|||||||
Field_decimal::overflow(1);
|
Field_decimal::overflow(1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Defining this will not store "+" for unsigned decimal type even if
|
||||||
|
it is passed in numeric string. This will make some tests to fail
|
||||||
|
*/
|
||||||
|
#ifdef DONT_ALLOW_UNSIGNED_PLUS
|
||||||
else
|
else
|
||||||
sign_char=0;
|
sign_char=0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user