MDEV-35960 st_isvalid(NULL) should not end up with an error, but return NULL.
Now these return NULL if the argument is NULL and an error if the argument is not a valid geometry.
This commit is contained in:
parent
4b720b027d
commit
38cc216634
@ -1840,7 +1840,7 @@ disjoint
|
||||
#
|
||||
select ST_IsRing(NULL);
|
||||
ST_IsRing(NULL)
|
||||
-1
|
||||
NULL
|
||||
#
|
||||
# MDEV-8675 Different results of GIS functions on NULL vs NOT NULL columns
|
||||
#
|
||||
@ -4398,7 +4398,7 @@ ST_NUMPOINTS(POINT(1,1)),
|
||||
ST_SRID(POINT(1,1));
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def ST_ISSIMPLE(POINT(1,1)) 3 2 1 Y 32896 0 63
|
||||
def ST_ISRING(POINT(1,1)) 3 2 2 Y 32896 0 63
|
||||
def ST_ISRING(POINT(1,1)) 3 2 1 Y 32896 0 63
|
||||
def ST_ISCLOSED(POINT(1,1)) 3 2 2 Y 32896 0 63
|
||||
def ST_DIMENSION(POINT(1,1)) 3 10 1 Y 32896 0 63
|
||||
def ST_NUMGEOMETRIES(POINT(1,1)) 3 10 0 Y 32896 0 63
|
||||
@ -4406,7 +4406,7 @@ def ST_NUMINTERIORRINGS(POINT(1,1)) 3 10 0 Y 32896 0 63
|
||||
def ST_NUMPOINTS(POINT(1,1)) 3 10 0 Y 32896 0 63
|
||||
def ST_SRID(POINT(1,1)) 3 10 1 Y 32896 0 63
|
||||
ST_ISSIMPLE(POINT(1,1)) ST_ISRING(POINT(1,1)) ST_ISCLOSED(POINT(1,1)) ST_DIMENSION(POINT(1,1)) ST_NUMGEOMETRIES(POINT(1,1)) ST_NUMINTERIORRINGS(POINT(1,1)) ST_NUMPOINTS(POINT(1,1)) ST_SRID(POINT(1,1))
|
||||
1 -1 -1 0 NULL NULL NULL 0
|
||||
1 0 -1 0 NULL NULL NULL 0
|
||||
#
|
||||
# MDEV-12803 Improve function parameter data type control
|
||||
#
|
||||
|
@ -247,19 +247,23 @@ SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0))')) c;
|
||||
c
|
||||
0
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))')) c;
|
||||
c
|
||||
1
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),POINT(10 10))')) c;
|
||||
c
|
||||
0
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),GEOMETRYCOLLECTION())'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),GEOMETRYCOLLECTION())'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,1 1,2 2,0 0)),GEOMETRYCOLLECTION())'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,1 1,2 2,0 0)),GEOMETRYCOLLECTION())'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,10 10,20 20),POLYGON((0 0,10 10,100 100,0 0)))')) c;
|
||||
c
|
||||
0
|
||||
@ -281,7 +285,9 @@ c
|
||||
1
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION('
|
||||
'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION('
|
||||
'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
|
||||
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')) c;
|
||||
c
|
||||
@ -290,20 +296,29 @@ SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(1
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10))))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LIN
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10))),'
|
||||
'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
|
||||
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10)))))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LIN
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10))),'
|
||||
'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LIN
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),'
|
||||
'LINESTRING(1 1,2 2,3 3),'
|
||||
'POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
|
||||
@ -323,43 +338,59 @@ c
|
||||
SELECT ST_ISVALID();
|
||||
ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISVALID'
|
||||
SELECT ST_ISVALID(NULL);
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(NULL)
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT()'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POINT()'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING()'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING()'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(())'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(())'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT()'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT()'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING(())'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING(())'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(a 0)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POINT(a 0)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(! 0)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POINT(! 0)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT('!' 0)'));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0)'))' at line 1
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(12,34 0)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POINT(12,34 0)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)'));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0,10 10)'))' at line 1
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))'));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0,10 10,10 0,0 0))'))' at line 1
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'));
|
||||
ERROR 22023: Invalid GIS data provided to function st_isvalid.
|
||||
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'))
|
||||
NULL
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_center,-1024));
|
||||
ST_ISVALID(ST_GEOMFROMTEXT(@star_center,-1024))
|
||||
1
|
||||
|
@ -219,20 +219,16 @@ SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0))')) c;
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))')) c;
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),POINT(10 10))')) c;
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),GEOMETRYCOLLECTION())'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,1 1,2 2,0 0)),GEOMETRYCOLLECTION())'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,10 10,20 20),POLYGON((0 0,10 10,100 100,0 0)))')) c;
|
||||
@ -249,25 +245,21 @@ SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))')) c;
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION('
|
||||
'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))))'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
|
||||
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')) c;
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10))))'));
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10))),'
|
||||
'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
|
||||
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10)))))'));
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
|
||||
'MULTIPOINT(0 0,10 10)),'
|
||||
'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
|
||||
@ -292,61 +284,45 @@ SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(MULTILINESTRING((-7 -2,-9
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT ST_ISVALID();
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(NULL);
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT()'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING()'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(())'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT()'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING(())'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(a 0)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(! 0)'));
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT('!' 0)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(12,34 0)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'));
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'));
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))'));
|
||||
|
||||
--error ER_GIS_INVALID_DATA
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'));
|
||||
|
||||
SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_center,-1024));
|
||||
|
@ -2093,7 +2093,8 @@ longlong Item_func_isvalid::val_int()
|
||||
if ((args[0]->null_value ||
|
||||
!(geometry= Geometry::construct(&buffer, wkb->ptr(), wkb->length()))))
|
||||
{
|
||||
my_error(ER_GIS_INVALID_DATA, MYF(0), func_name());
|
||||
if (!args[0]->null_value)
|
||||
my_error(ER_GIS_INVALID_DATA, MYF(0), func_name());
|
||||
null_value= 1;
|
||||
return 1;
|
||||
}
|
||||
@ -2200,8 +2201,10 @@ longlong Item_func_issimple::val_int()
|
||||
if ((args[0]->null_value ||
|
||||
!(geometry= Geometry::construct(&buffer, swkb->ptr(), swkb->length()))))
|
||||
{
|
||||
/* We got NULL as an argument. Have to return -1 */
|
||||
DBUG_RETURN(-1);
|
||||
if (!args[0]->null_value)
|
||||
my_error(ER_GIS_INVALID_DATA, MYF(0), func_name());
|
||||
null_value= 1;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
if (geometry->get_class_info()->m_type_id == Geometry::wkb_point)
|
||||
@ -2316,14 +2319,15 @@ longlong Item_func_isring::val_int()
|
||||
null_value= 0;
|
||||
if (!swkb ||
|
||||
args[0]->null_value ||
|
||||
!(geom= Geometry::construct(&buffer, swkb->ptr(), swkb->length())) ||
|
||||
geom->is_closed(&isclosed))
|
||||
!(geom= Geometry::construct(&buffer, swkb->ptr(), swkb->length())))
|
||||
{
|
||||
/* IsRing(NULL) should return -1 */
|
||||
return -1;
|
||||
if (!args[0]->null_value)
|
||||
my_error(ER_GIS_INVALID_DATA, MYF(0), func_name());
|
||||
null_value= 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!isclosed)
|
||||
if (geom->is_closed(&isclosed) || !isclosed)
|
||||
return 0;
|
||||
|
||||
return Item_func_issimple::val_int();
|
||||
|
Loading…
x
Reference in New Issue
Block a user