summaryrefslogtreecommitdiff
path: root/sql/protocol.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r--sql/protocol.cc15
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);
}