diff options
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r-- | sql/protocol.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc index f4efb8004ee..46d28a16c58 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -897,7 +897,7 @@ bool Protocol_simple::store(float from, uint32 decimals, String *buffer) field_types[field_pos] == MYSQL_TYPE_FLOAT); field_pos++; #endif - buffer->set((double) from, decimals, thd->charset()); + buffer->set_real((double) from, decimals, thd->charset()); return net_store_data((char*) buffer->ptr(), buffer->length()); } @@ -909,7 +909,7 @@ bool Protocol_simple::store(double from, uint32 decimals, String *buffer) field_types[field_pos] == MYSQL_TYPE_DOUBLE); field_pos++; #endif - buffer->set(from, decimals, thd->charset()); + buffer->set_real(from, decimals, thd->charset()); return net_store_data((char*) buffer->ptr(), buffer->length()); } @@ -924,8 +924,19 @@ bool Protocol_simple::store(Field *field) char buff[MAX_FIELD_WIDTH]; String str(buff,sizeof(buff), &my_charset_bin); CHARSET_INFO *tocs= this->thd->variables.character_set_results; + TABLE *table= field->table; +#ifdef DBUG_OFF + my_bitmap_map *old_map= 0; + if (table->file) + old_map= dbug_tmp_use_all_columns(table, table->read_set); +#endif field->val_str(&str); +#ifdef DBUG_OFF + if (old_map) + dbug_tmp_restore_column_map(table->read_set, old_map); +#endif + return store_string_aux(str.ptr(), str.length(), str.charset(), tocs); } |