diff options
author | unknown <monty@mysql.com> | 2004-05-07 01:44:07 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-05-07 01:44:07 +0300 |
commit | c62c4497e21656f6bda45461e43fcad92d532b74 (patch) | |
tree | 45482fc4c7295d6167c15b718188a6df114ae764 /sql | |
parent | eac9345a8abfaa852ffed4c22e3933ec83a0b2a7 (diff) | |
parent | f3b3b2b1fa83bd021aa13b53692a4e8a3c35a7ac (diff) | |
download | mariadb-git-c62c4497e21656f6bda45461e43fcad92d532b74.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
libmysql/libmysql.c:
Auto merged
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item.cc | 23 | ||||
-rw-r--r-- | sql/item.h | 9 | ||||
-rw-r--r-- | sql/item_sum.h | 8 | ||||
-rw-r--r-- | sql/item_timefunc.cc | 2 |
4 files changed, 32 insertions, 10 deletions
diff --git a/sql/item.cc b/sql/item.cc index 2dabb8e26ef..11a9e88bdd6 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -503,6 +503,22 @@ Item *Item_field::get_tmp_table_item(THD *thd) } +/* + Create an item from a string we KNOW points to a valid longlong/ulonglong + end \0 terminated number string +*/ + +Item_int::Item_int(const char *str_arg, uint length) +{ + char *end_ptr= (char*) str_arg + length; + int error; + value= my_strtoll10(str_arg, &end_ptr, &error); + max_length= (uint) (end_ptr - str_arg); + name= (char*) str_arg; + fixed= 1; +} + + String *Item_int::val_str(String *str) { // following assert is redundant, because fixed=1 assigned in constructor @@ -519,6 +535,13 @@ void Item_int::print(String *str) } +Item_uint::Item_uint(const char *str_arg, uint length): + Item_int(str_arg, length) +{ + unsigned_flag= 1; +} + + String *Item_uint::val_str(String *str) { // following assert is redundant, because fixed=1 assigned in constructor diff --git a/sql/item.h b/sql/item.h index 780e2fcadac..99a0516e439 100644 --- a/sql/item.h +++ b/sql/item.h @@ -456,10 +456,7 @@ public: #endif Item_int(const char *str_arg,longlong i,uint length) :value(i) { max_length=length; name=(char*) str_arg; fixed= 1; } - Item_int(const char *str_arg) : - value(str_arg[0] == '-' ? strtoll(str_arg,(char**) 0,10) : - (longlong) strtoull(str_arg,(char**) 0,10)) - { max_length= (uint) strlen(str_arg); name=(char*) str_arg; fixed= 1; } + Item_int(const char *str_arg, uint length=64); enum Type type() const { return INT_ITEM; } enum Item_result result_type () const { return INT_RESULT; } enum_field_types field_type() const { return MYSQL_TYPE_LONGLONG; } @@ -479,9 +476,7 @@ public: class Item_uint :public Item_int { public: - Item_uint(const char *str_arg, uint length) : - Item_int(str_arg, (longlong) strtoull(str_arg, (char**) 0,10), length) - { unsigned_flag= 1; } + Item_uint(const char *str_arg, uint length); Item_uint(uint32 i) :Item_int((longlong) i, 10) { unsigned_flag= 1; } double val() diff --git a/sql/item_sum.h b/sql/item_sum.h index d7753303f55..4cded41a9f6 100644 --- a/sql/item_sum.h +++ b/sql/item_sum.h @@ -735,8 +735,12 @@ class Item_func_group_concat : public Item_sum } longlong val_int() { - String *res; res=val_str(&str_value); - return res ? strtoll(res->c_ptr(),(char**) 0,10) : (longlong) 0; + String *res; + char *end_ptr; + int error; + res= val_str(&str_value); + end_ptr= (char*) res->ptr()+ res->length(); + return res ? my_strtoll10(res->ptr(), &end_ptr, &error) : (longlong) 0; } String* val_str(String* str); Item *copy_or_same(THD* thd); diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 0c0b5265db7..e8848243812 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1666,7 +1666,7 @@ bool Item_date_add_interval::get_date(TIME *ltime, uint fuzzy_date) days--; sec+= 3600*LL(24); } - ltime->second_part= microseconds; + ltime->second_part= (uint) microseconds; ltime->second= (uint) (sec % 60); ltime->minute= (uint) (sec/60 % 60); ltime->hour= (uint) (sec/3600); |