diff options
author | unknown <serg@serg.mylan> | 2006-06-14 23:09:03 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2006-06-14 23:09:03 +0200 |
commit | 7c1748a1a4e38dc49490a6c31761fe05a820d9e0 (patch) | |
tree | f9c313d15e6ff26bd765b22c705fbce5b2f9fb45 /sql | |
parent | 98b03424aeb707c8c5ebd17721fdb5ad50b7727c (diff) | |
download | mariadb-git-7c1748a1a4e38dc49490a6c31761fe05a820d9e0.tar.gz |
cleanup String::set(integer)
Diffstat (limited to 'sql')
-rw-r--r-- | sql/field.cc | 5 | ||||
-rw-r--r-- | sql/item.cc | 5 | ||||
-rw-r--r-- | sql/item_func.cc | 20 | ||||
-rw-r--r-- | sql/item_sum.cc | 5 | ||||
-rw-r--r-- | sql/sql_string.cc | 16 | ||||
-rw-r--r-- | sql/sql_string.h | 7 |
6 files changed, 15 insertions, 43 deletions
diff --git a/sql/field.cc b/sql/field.cc index 1f65adca2d5..b51e5b63779 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -7125,10 +7125,7 @@ int Field_blob::store(double nr) int Field_blob::store(longlong nr, bool unsigned_val) { CHARSET_INFO *cs=charset(); - if (unsigned_val) - value.set((ulonglong) nr, cs); - else - value.set(nr, cs); + value.set(nr, unsigned_val, cs); return Field_blob::store(value.ptr(), (uint) value.length(), cs); } diff --git a/sql/item.cc b/sql/item.cc index 5fa3ad61c15..cb5bbab53a2 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -212,10 +212,7 @@ String *Item::val_string_from_int(String *str) longlong nr= val_int(); if (null_value) return 0; - if (unsigned_flag) - str->set((ulonglong) nr, &my_charset_bin); - else - str->set(nr, &my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } diff --git a/sql/item_func.cc b/sql/item_func.cc index 051238843fa..5030c9729cd 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -556,10 +556,7 @@ String *Item_int_func::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } @@ -701,10 +698,7 @@ String *Item_func_numhybrid::val_str(String *str) longlong nr= int_op(); if (null_value) return 0; /* purecov: inspected */ - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); break; } case REAL_RESULT: @@ -2058,10 +2052,7 @@ String *Item_func_min_max::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } case DECIMAL_RESULT: @@ -2847,10 +2838,7 @@ String *Item_func_udf_int::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 1285e842769..2479d181276 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -1584,10 +1584,7 @@ Item_sum_hybrid::val_str(String *str) my_decimal2string(E_DEC_FATAL_ERROR, &sum_dec, 0, 0, 0, str); return str; case INT_RESULT: - if (unsigned_flag) - str->set((ulonglong) sum_int, &my_charset_bin); - else - str->set((longlong) sum_int, &my_charset_bin); + str->set(sum_int, unsigned_flag, &my_charset_bin); break; case ROW_RESULT: default: diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 19ee9f259dc..39395ae2ca5 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -96,24 +96,14 @@ bool String::realloc(uint32 alloc_length) return FALSE; } -bool String::set(longlong num, CHARSET_INFO *cs) +bool String::set(longlong num, bool unsigned_flag, CHARSET_INFO *cs) { uint l=20*cs->mbmaxlen+1; + int base= unsigned_flag ? 10 : -10; if (alloc(l)) return TRUE; - str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,-10,num); - str_charset=cs; - return FALSE; -} - -bool String::set(ulonglong num, CHARSET_INFO *cs) -{ - uint l=20*cs->mbmaxlen+1; - - if (alloc(l)) - return TRUE; - str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,10,num); + str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,base,num); str_charset=cs; return FALSE; } diff --git a/sql/sql_string.h b/sql/sql_string.h index ddae6368228..4e1d3a4837e 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -139,8 +139,11 @@ public: } str_charset=cs; } - bool set(longlong num, CHARSET_INFO *cs); - bool set(ulonglong num, CHARSET_INFO *cs); + bool set(longlong num, bool unsigned_flag, CHARSET_INFO *cs); + bool set(longlong num, CHARSET_INFO *cs) + { return set(num, false, cs); } + bool set(ulonglong num, CHARSET_INFO *cs) + { return set((longlong)num, true, cs); } bool set(double num,uint decimals, CHARSET_INFO *cs); /* |