mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Use of new string->number conversion routines
This commit is contained in:
parent
8762e83485
commit
072abca49b
1 changed files with 12 additions and 29 deletions
41
sql/field.cc
41
sql/field.cc
|
@ -806,14 +806,11 @@ double Field_decimal::val_real(void)
|
|||
|
||||
longlong Field_decimal::val_int(void)
|
||||
{
|
||||
char temp= *(ptr+field_length); *(ptr+field_length) = '\0';
|
||||
longlong nr;
|
||||
CHARSET_INFO *cs=charset();
|
||||
if (unsigned_flag)
|
||||
nr=(longlong) strtoull(ptr,NULL,10);
|
||||
return my_strntoull(cs,ptr,field_length,NULL,10);
|
||||
else
|
||||
nr=strtoll(ptr,NULL,10);
|
||||
*(ptr+field_length)=temp;
|
||||
return(nr);
|
||||
return my_strntoll(cs,ptr,field_length,NULL,10);
|
||||
}
|
||||
|
||||
String *Field_decimal::val_str(String *val_buffer __attribute__((unused)),
|
||||
|
@ -1100,8 +1097,7 @@ void Field_tiny::sql_type(String &res) const
|
|||
****************************************************************************/
|
||||
|
||||
|
||||
// Note: Sometimes this should be fixed to use one strtol() to use
|
||||
// len and check for garbage after number.
|
||||
// Note: Sometimes this should be fixed to check for garbage after number.
|
||||
|
||||
int Field_short::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
{
|
||||
|
@ -1363,8 +1359,7 @@ void Field_short::sql_type(String &res) const
|
|||
** medium int
|
||||
****************************************************************************/
|
||||
|
||||
// Note: Sometimes this should be fixed to use one strtol() to use
|
||||
// len and check for garbage after number.
|
||||
// Note: Sometimes this should be fixed to check for garbage after number.
|
||||
|
||||
int Field_medium::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
{
|
||||
|
@ -1571,8 +1566,7 @@ void Field_medium::sql_type(String &res) const
|
|||
****************************************************************************/
|
||||
|
||||
|
||||
// Note: Sometimes this should be fixed to use one strtol() to use
|
||||
// len and check for garbage after number.
|
||||
// Note: Sometimes this should be fixed to check for garbage after number.
|
||||
|
||||
int Field_long::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
{
|
||||
|
@ -3806,11 +3800,8 @@ double Field_string::val_real(void)
|
|||
longlong Field_string::val_int(void)
|
||||
{
|
||||
longlong value;
|
||||
char save=ptr[field_length]; // Ok to patch record
|
||||
ptr[field_length]=0;
|
||||
value=strtoll(ptr,NULL,10);
|
||||
ptr[field_length]=save;
|
||||
return value;
|
||||
CHARSET_INFO *cs=charset();
|
||||
return my_strntoll(cs,ptr,field_length,NULL,10);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4010,13 +4001,9 @@ double Field_varstring::val_real(void)
|
|||
|
||||
longlong Field_varstring::val_int(void)
|
||||
{
|
||||
longlong value;
|
||||
uint length=uint2korr(ptr)+2;
|
||||
char save=ptr[length]; // Ok to patch record
|
||||
ptr[length]=0;
|
||||
value=strtoll(ptr+2,NULL,10);
|
||||
ptr[length]=save;
|
||||
return value;
|
||||
CHARSET_INFO *cs=charset();
|
||||
return my_strntoll(cs,ptr+2,length,NULL,10);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4355,12 +4342,8 @@ longlong Field_blob::val_int(void)
|
|||
if (!blob)
|
||||
return 0;
|
||||
uint32 length=get_length(ptr);
|
||||
|
||||
char save=blob[length]; // Ok to patch blob in NISAM
|
||||
blob[length]=0;
|
||||
longlong nr=strtoll(blob,NULL,10);
|
||||
blob[length]=save;
|
||||
return nr;
|
||||
CHARSET_INFO *cs=charset();
|
||||
return my_strntoll(cs,blob,length,NULL,10);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue