summaryrefslogtreecommitdiff
path: root/sql/spatial.cc
diff options
context:
space:
mode:
authorunknown <hf@deer.(none)>2004-05-25 15:06:32 +0500
committerunknown <hf@deer.(none)>2004-05-25 15:06:32 +0500
commitc690204c701f35bda2d19f14b0e8423c80cff1bb (patch)
tree1bd30ca9cbdba7bdacc7453d22bf1f95af138fd0 /sql/spatial.cc
parentde861db3e73b72a01eceed23095c4793f893d6c4 (diff)
downloadmariadb-git-c690204c701f35bda2d19f14b0e8423c80cff1bb.tar.gz
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
Diffstat (limited to 'sql/spatial.cc')
-rw-r--r--sql/spatial.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/spatial.cc b/sql/spatial.cc
index ab415d9af10..f26e7dc3e83 100644
--- a/sql/spatial.cc
+++ b/sql/spatial.cc
@@ -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;