From 26f662be1c12b6cfddc33a88b33d2986f3d0da0f Mon Sep 17 00:00:00 2001 From: Venkata Sidagam Date: Thu, 24 Jan 2013 14:56:12 +0530 Subject: [PATCH] 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 --- sql/field.h | 8 +++++++- sql/field_conv.cc | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/sql/field.h b/sql/field.h index ca23702fd8c..cc709bc0c9c 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1824,7 +1824,13 @@ public: int store(longlong nr, bool unsigned_val); int store_decimal(const my_decimal *); 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; }; }; #endif /*HAVE_SPATIAL*/ diff --git a/sql/field_conv.cc b/sql/field_conv.cc index 782d41fc8f1..b97061be147 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -179,7 +179,10 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) ((Field_timestamp*) field)->set_time(); return 0; // Ok to set time to NULL } + + // Note: we ignore any potential failure of reset() here. field->reset(); + if (field == field->table->next_number_field) { field->table->auto_increment_field_not_null= FALSE;