summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/sql/field.cc b/sql/field.cc
index ff8b948ef62..23a8ecd965d 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -1371,12 +1371,15 @@ void Field_num::prepend_zeros(String *value) const
int diff;
if ((diff= (int) (field_length - value->length())) > 0)
{
- bmove_upp((uchar*) value->ptr()+field_length,
- (uchar*) value->ptr()+value->length(),
- value->length());
- bfill((uchar*) value->ptr(),diff,'0');
- value->length(field_length);
- (void) value->c_ptr_quick(); // Avoid warnings in purify
+ const bool error= value->realloc(field_length);
+ if (!error)
+ {
+ bmove_upp((uchar*) value->ptr()+field_length,
+ (uchar*) value->ptr()+value->length(),
+ value->length());
+ bfill((uchar*) value->ptr(),diff,'0');
+ value->length(field_length);
+ }
}
}
@@ -2309,9 +2312,10 @@ void Field::set_default()
{
if (default_value)
{
- table->in_use->reset_arena_for_cached_items(table->expr_arena);
+ Query_arena backup_arena;
+ table->in_use->set_n_backup_active_arena(table->expr_arena, &backup_arena);
(void) default_value->expr->save_in_field(this, 0);
- table->in_use->reset_arena_for_cached_items(0);
+ table->in_use->restore_active_arena(table->expr_arena, &backup_arena);
return;
}
/* Copy constant value stored in s->default_values */
@@ -10509,7 +10513,7 @@ Column_definition::Column_definition(THD *thd, Field *old_field,
if (length != 4)
{
char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
- my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length);
+ my_snprintf(buff, sizeof(buff), "YEAR(%llu)", length);
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_WARN_DEPRECATED_SYNTAX,
ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),