diff options
author | unknown <hf@deer.(none)> | 2004-05-25 15:06:32 +0500 |
---|---|---|
committer | unknown <hf@deer.(none)> | 2004-05-25 15:06:32 +0500 |
commit | c690204c701f35bda2d19f14b0e8423c80cff1bb (patch) | |
tree | 1bd30ca9cbdba7bdacc7453d22bf1f95af138fd0 /sql/spatial.cc | |
parent | de861db3e73b72a01eceed23095c4793f893d6c4 (diff) | |
download | mariadb-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.cc | 7 |
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; |