mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
MDEV-7514 GIS: PointOnSurface returns NULL instead of the point.
Need to take into account cases of a polygon shaped as a very thin line.
This commit is contained in:
@@ -1774,3 +1774,9 @@ ST_IsRing(ST_LineFromText('LINESTRING(0 0,0 10,10 10,0 0)'))
|
||||
select ST_IsRing(ST_LineFromText('LINESTRING(0 0,0 10,10 10,-10 -10, 0 -10, 0 0)'));
|
||||
ST_IsRing(ST_LineFromText('LINESTRING(0 0,0 10,10 10,-10 -10, 0 -10, 0 0)'))
|
||||
0
|
||||
#
|
||||
# MDEV-7514 GIS: PointOnSurface returns NULL instead of the point.
|
||||
#
|
||||
SELECT ST_GEOMETRYTYPE(ST_PointOnSurface(ST_PolyFromText('POLYGON((-70.916 42.1002,-70.9468 42.0946,-70.9754 42.0875,-70.9749 42.0879,-70.9759 42.0897,-70.916 42.1002))')));
|
||||
ST_GEOMETRYTYPE(ST_PointOnSurface(ST_PolyFromText('POLYGON((-70.916 42.1002,-70.9468 42.0946,-70.9754 42.0875,-70.9749 42.0879,-70.9759 42.0897,-70.916 42.1002))')))
|
||||
POINT
|
||||
|
||||
@@ -1492,3 +1492,8 @@ drop table t1;
|
||||
select ST_IsRing(ST_LineFromText('LINESTRING(0 0,0 10,10 10,0 0)'));
|
||||
select ST_IsRing(ST_LineFromText('LINESTRING(0 0,0 10,10 10,-10 -10, 0 -10, 0 0)'));
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7514 GIS: PointOnSurface returns NULL instead of the point.
|
||||
--echo #
|
||||
SELECT ST_GEOMETRYTYPE(ST_PointOnSurface(ST_PolyFromText('POLYGON((-70.916 42.1002,-70.9468 42.0946,-70.9754 42.0875,-70.9749 42.0879,-70.9759 42.0897,-70.916 42.1002))')));
|
||||
|
||||
|
||||
@@ -2346,7 +2346,7 @@ String *Item_func_pointonsurface::val_str(String *str)
|
||||
}
|
||||
x0= scan_it.get_sp_x(pprev);
|
||||
px= scan_it.get_sp_x(pit.point());
|
||||
if (px - x0 > GIS_ZERO)
|
||||
if (fabs(px - x0) > GIS_ZERO)
|
||||
{
|
||||
if (scan_it.get_h() > GIS_ZERO)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user