1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL

Having maybe_null flag unset for geometry/spatial functions leads to
wrong Item_func_isnull::val_int()'s results.
Fix: set maybe_null flag and add is_null() methods.


mysql-test/r/gis.result:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - test result.
mysql-test/t/gis.test:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - test case.
sql/item_geofunc.cc:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - set maybe_null flag for Item_geometry_func and Item_func_as_wkt.
    - moved length check to the beginnig of the 
      Item_func_spatial_collection::val_str() to affect geometry 
      collection objects at once.
    - changed Item_func_isempty::val_int() and Item_func_issimple::val_int()
      to properly handle null_value.
sql/item_geofunc.h:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - set maybe_null flag for geometry/spatial functions.
    - added is_null() to Item_geometry_func and Item_func_spatial_rel
      classes.
sql/spatial.cc:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - changed return type of Geometry::create_from_wkb() to be 
      consistent with Geometry::create_from_wkt(), now it returns
      Geometry object or NULL in case of error.
sql/spatial.h:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - changed return type of Geometry::create_from_wkb() to be 
      consistent with Geometry::create_from_wkt(), now it returns
      Geometry object or NULL in case of error.
This commit is contained in:
unknown
2007-02-21 14:45:19 +04:00
parent 557f6169b9
commit cbb38476e1
6 changed files with 136 additions and 27 deletions

View File

@@ -244,8 +244,8 @@ public:
static Geometry *create_from_wkt(Geometry_buffer *buffer,
Gis_read_stream *trs, String *wkt,
bool init_stream=1);
static int create_from_wkb(Geometry_buffer *buffer,
const char *wkb, uint32 len, String *res);
static Geometry *create_from_wkb(Geometry_buffer *buffer, const char *wkb,
uint32 len, String *res);
int as_wkt(String *wkt, const char **end)
{
uint32 len= get_class_info()->m_name.length;