diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-10-25 20:24:11 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-10-25 20:24:34 +0200 |
commit | 72e79eaaf3e4619bbaf900f6710ffb6a00ff95bf (patch) | |
tree | 13320fb94eb60582670dfb7bdc21ff608c0444ac | |
parent | 1ff476b415cacc616f68af542b75793d064367ae (diff) | |
download | mariadb-git-72e79eaaf3e4619bbaf900f6710ffb6a00ff95bf.tar.gz |
cleanup: put casts in a separate statement
remove useless if()
-rw-r--r-- | sql/item_geofunc.cc | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/sql/item_geofunc.cc b/sql/item_geofunc.cc index f2cc2e61b96..b40105aaf36 100644 --- a/sql/item_geofunc.cc +++ b/sql/item_geofunc.cc @@ -2601,51 +2601,53 @@ double Item_func_sphere_distance::spherical_distance_points(Geometry *g1, switch (g2->get_class_info()->m_type_id) { case Geometry::wkb_point: - // Optimization for point-point case + { + Gis_point *g2p= static_cast<Gis_point *>(g2); + // Optimization for point-point case if (g1->get_class_info()->m_type_id == Geometry::wkb_point) { - res= static_cast<Gis_point *>(g2)->calculate_haversine(g1, r, &error); + res= g2p->calculate_haversine(g1, r, &error); } else { // Optimization for single point in Multipoint if (g1->get_data_size() == len) { - res= static_cast<Gis_point *>(g2)->calculate_haversine(g1, r, &error); + res= g2p->calculate_haversine(g1, r, &error); } else { // There are multipoints in g1 // g1 is MultiPoint and calculate MP.sphericaldistance from g2 Point if (g1->get_data_size() != GET_SIZE_ERROR) - static_cast<Gis_point *>(g2)->spherical_distance_multipoints( - (Gis_multi_point *)g1, r, &res, &error); + g2p->spherical_distance_multipoints(g1, r, &res, &error); } } break; + } case Geometry::wkb_multipoint: // Optimization for point-point case if (g1->get_class_info()->m_type_id == Geometry::wkb_point) { + Gis_point *g1p= static_cast<Gis_point *>(g1); // Optimization for single point in Multipoint g2 if (g2->get_data_size() == len) { - res= static_cast<Gis_point *>(g1)->calculate_haversine(g2, r, &error); + res= g1p->calculate_haversine(g2, r, &error); } else { if (g2->get_data_size() != GET_SIZE_ERROR) // g1 is a point (casted to multi_point) and g2 multipoint - static_cast<Gis_point *>(g1)->spherical_distance_multipoints( - (Gis_multi_point *)g2, r, &res, &error); + g1p->spherical_distance_multipoints(g2, r, &res, &error); } } else { + Gis_multi_point *g1mp= static_cast<Gis_multi_point *>(g1); // Multipoints in g1 and g2 - no optimization - static_cast<Gis_multi_point *>(g1)->spherical_distance_multipoints( - (Gis_multi_point *)g2, r, &res, &error); + g1mp->spherical_distance_multipoints(g2, r, &res, &error); } break; @@ -2654,16 +2656,12 @@ double Item_func_sphere_distance::spherical_distance_points(Geometry *g1, break; } - if (res < 0) - goto handle_error; - - handle_error: - if (error > 0) - my_error(ER_STD_OUT_OF_RANGE_ERROR, MYF(0), - "Longitude should be [-180,180]", "ST_Distance_Sphere"); - else if(error < 0) - my_error(ER_STD_OUT_OF_RANGE_ERROR, MYF(0), - "Latitude should be [-90,90]", "ST_Distance_Sphere"); + if (error > 0) + my_error(ER_STD_OUT_OF_RANGE_ERROR, MYF(0), + "Longitude should be [-180,180]", "ST_Distance_Sphere"); + else if(error < 0) + my_error(ER_STD_OUT_OF_RANGE_ERROR, MYF(0), + "Latitude should be [-90,90]", "ST_Distance_Sphere"); return res; } |