summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2006-06-14 23:09:03 +0200
committerunknown <serg@serg.mylan>2006-06-14 23:09:03 +0200
commit7c1748a1a4e38dc49490a6c31761fe05a820d9e0 (patch)
treef9c313d15e6ff26bd765b22c705fbce5b2f9fb45 /sql
parent98b03424aeb707c8c5ebd17721fdb5ad50b7727c (diff)
downloadmariadb-git-7c1748a1a4e38dc49490a6c31761fe05a820d9e0.tar.gz
cleanup String::set(integer)
Diffstat (limited to 'sql')
-rw-r--r--sql/field.cc5
-rw-r--r--sql/item.cc5
-rw-r--r--sql/item_func.cc20
-rw-r--r--sql/item_sum.cc5
-rw-r--r--sql/sql_string.cc16
-rw-r--r--sql/sql_string.h7
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);
/*