Commit 5674d559 authored by Venkata Sidagam's avatar Venkata Sidagam

BUG#11908153 CRASH AND/OR VALGRIND ERRORS IN FIELD_BLOB::GET_KEY_IMAGE

Backporting bug patch from 5.5 to 5.1.
This fix is applicable to BUG#14362617 as well
parent d0181929
...@@ -1824,7 +1824,13 @@ public: ...@@ -1824,7 +1824,13 @@ public:
int store(longlong nr, bool unsigned_val); int store(longlong nr, bool unsigned_val);
int store_decimal(const my_decimal *); int store_decimal(const my_decimal *);
uint size_of() const { return sizeof(*this); } uint size_of() const { return sizeof(*this); }
int reset(void) { return !maybe_null() || Field_blob::reset(); }
/**
Non-nullable GEOMETRY types cannot have defaults,
but the underlying blob must still be reset.
*/
int reset(void) { return Field_blob::reset() || !maybe_null(); }
geometry_type get_geometry_type() { return geom_type; }; geometry_type get_geometry_type() { return geom_type; };
}; };
#endif /*HAVE_SPATIAL*/ #endif /*HAVE_SPATIAL*/
......
...@@ -179,7 +179,10 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) ...@@ -179,7 +179,10 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
((Field_timestamp*) field)->set_time(); ((Field_timestamp*) field)->set_time();
return 0; // Ok to set time to NULL return 0; // Ok to set time to NULL
} }
// Note: we ignore any potential failure of reset() here.
field->reset(); field->reset();
if (field == field->table->next_number_field) if (field == field->table->next_number_field)
{ {
field->table->auto_increment_field_not_null= FALSE; field->table->auto_increment_field_not_null= FALSE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment