Commit a1443a7e authored by peter@mysql.com's avatar peter@mysql.com
Browse files

Allow storing "+456" then decimal declared unsigned

parent 28142456
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -199,15 +199,15 @@ select * from t1;
a
0.00
0.00
0.00
01.00
+0.00
01.00
+01.00
0.00
0.00
+0.10
0.10
0.10
00000001.00
00000001.00
+0000001.00
0.00
99999999.99
99999999.99
@@ -316,9 +316,9 @@ select * from t1;
a
0
0
1
+1
01
0000000001
+000000001
1234567890
9999999999
drop  table t1;
+9 −2
Original line number Diff line number Diff line
@@ -431,8 +431,9 @@ void Field_decimal::store(const char *from,uint len)
  {
    sign_char= *from++;
    /*
      Unsigned can't have any flag. So we'll just drop "+"
      and will overflow on "-"
      We allow "+" for unsigned decimal unless defined different
      Both options allowed as one may wish not to have "+" for unsigned numbers
      because of data processing issues
    */ 
    if (unsigned_flag)  
    { 
@@ -441,8 +442,14 @@ void Field_decimal::store(const char *from,uint len)
        Field_decimal::overflow(1);
        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 
        sign_char=0;
#endif 	
    }
  }