From a6946c55d39ffd70c47ae21df2484243a80a3f99 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 5 Jul 2019 20:52:59 +0400 Subject: MDEV-19972 Move GIS code from Item_bool_func::get_full_func_mm_tree() to Item_func_spatial_rel::get_mm_leaf() --- sql/item_geofunc.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'sql/item_geofunc.cc') diff --git a/sql/item_geofunc.cc b/sql/item_geofunc.cc index 048841ff30f..54423e8cdd8 100644 --- a/sql/item_geofunc.cc +++ b/sql/item_geofunc.cc @@ -1062,9 +1062,17 @@ Item_func_spatial_rel::get_mm_leaf(RANGE_OPT_PARAM *param, if (param->using_real_indexes && !field->optimize_range(param->real_keynr[key_part->key], key_part->part)) - DBUG_RETURN(0); + DBUG_RETURN(0); + + Field_geom *field_geom= dynamic_cast(field); + DBUG_ASSERT(field_geom); + const Type_handler_geometry *sav_geom_type= field_geom->type_handler_geom(); + // We have to be able to store all sorts of spatial features here + field_geom->set_type_handler(&type_handler_geometry); + bool rc= value->save_in_field_no_warnings(field, 1); + field_geom->set_type_handler(sav_geom_type); - if (value->save_in_field_no_warnings(field, 1)) + if (rc) DBUG_RETURN(&sel_arg_impossible); // Bad GEOMETRY value DBUG_ASSERT(!field->real_maybe_null()); // SPATIAL keys do not support NULL -- cgit v1.2.1