diff options
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/item.cc b/sql/item.cc index dbb9c4ec38d..5eae3a9b542 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -37,7 +37,7 @@ void item_init(void) Item::Item() { marker=0; - binary=maybe_null=null_value=with_sum_func=0; + binary=maybe_null=null_value=with_sum_func=unsigned_flag=0; name=0; decimals=0; max_length=0; next=current_thd->free_list; // Put in free list @@ -116,6 +116,7 @@ void Item_field::set_field(Field *field_par) table_name=field_par->table_name; field_name=field_par->field_name; binary=field_par->binary(); + unsigned_flag=test(field_par->flags & UNSIGNED_FLAG); } const char *Item_ident::full_name() const @@ -326,6 +327,8 @@ void Item::init_make_field(Send_field *tmp_field, tmp_field->type=field_type; tmp_field->length=max_length; tmp_field->decimals=decimals; + if (unsigned_flag) + tmp_field->flags |= UNSIGNED_FLAG; } /* ARGSUSED */ @@ -345,6 +348,7 @@ void Item_uint::make_field(Send_field *tmp_field) { init_make_field(tmp_field,FIELD_TYPE_LONGLONG); tmp_field->flags|= UNSIGNED_FLAG; + unsigned_flag=1; } void Item_real::make_field(Send_field *tmp_field) |