diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result
index 5623482aa7f963ff449a0d3b440b763e6cc4033f..a66809b139bb89fe797672c011eb7e7e42e2b306 100644
--- a/mysql-test/r/type_decimal.result
+++ b/mysql-test/r/type_decimal.result
@@ -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;
diff --git a/sql/field.cc b/sql/field.cc
index eb3dc7948d41f305f41227d2e669394fe551bb33..42ddcc3b9d2c7b102c95367b58e3ea82df00b1eb 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -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 	
     }
   }
 
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 69abe813eedaca8bd8a6b2352ef128ff5ef45137..3aff3255706bf1a027c4a09e7ebdba68892093b8 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -708,6 +708,8 @@ pthread_handler_decl(handle_bootstrap,arg)
   sigset_t set;
   VOID(sigemptyset(&set));			// Get mask in use
   VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals));
+
+
 #endif
 
   if ((ulong) thd->variables.max_join_size == (ulong) HA_POS_ERROR)