mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
WL#1562 (Improving spatial code)
A set of changes improving our RTree indexes and fixed few bugs found during the tests myisam/rt_index.c: Algorythm for picking the branch to insert was fixed. pick_by_perimeter version of the algorythm added (mostly for testing purposes) myisam/rt_index.h: minimal size of the page set to 1/3 It noticeable increases searching performance myisam/rt_key.c: counting of the size of the filled part of the page fixed rtree_choose_key moved to rt_index.c myisam/rt_key.h: no need to make rtree_choose_key global myisam/rt_mbr.c: operations for counting the perimeter of MBR added myisam/rt_mbr.h: interface for rtree_perimeter_increase myisam/rt_split.c: my_multi_malloc changed with my_alloca sql/spatial.cc: LINESTRING object can consist of single point
This commit is contained in:
@@ -395,7 +395,7 @@ bool Gis_line_string::init_from_wkt(Gis_read_stream *trs, String *wkb)
|
||||
if (trs->skip_char(',')) // Didn't find ','
|
||||
break;
|
||||
}
|
||||
if (n_points < 2)
|
||||
if (n_points < 1)
|
||||
{
|
||||
trs->set_error_msg("Too few points in LINESTRING");
|
||||
return 1;
|
||||
@@ -484,6 +484,11 @@ int Gis_line_string::is_closed(int *closed) const
|
||||
if (no_data(data, 4))
|
||||
return 1;
|
||||
n_points= uint4korr(data);
|
||||
if (n_points == 1)
|
||||
{
|
||||
*closed=1;
|
||||
return 0;
|
||||
}
|
||||
data+= 4;
|
||||
if (no_data(data, SIZEOF_STORED_DOUBLE * 2 * n_points))
|
||||
return 1;
|
||||
|
Reference in New Issue
Block a user