diff options
author | unknown <hf@deer.mysql.r18.ru> | 2002-12-18 17:17:35 +0400 |
---|---|---|
committer | unknown <hf@deer.mysql.r18.ru> | 2002-12-18 17:17:35 +0400 |
commit | 190fb8960aab98c41d746f8a42f4a1022744a31d (patch) | |
tree | 1e96aa4ef0607a1ad701b6d3b70e9c51c9c8e2f8 /sql | |
parent | f2e5f6524bffce08375b4ec68f57d10713c53935 (diff) | |
download | mariadb-git-190fb8960aab98c41d746f8a42f4a1022744a31d.tar.gz |
Spatial-related fixes
sql/item_strfunc.cc:
spatial function's fixes
sql/spatial.cc:
spatial type comperations are case-independent now
sql/sql_string.h:
this is a bit safer
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_strfunc.cc | 22 | ||||
-rw-r--r-- | sql/spatial.cc | 4 | ||||
-rw-r--r-- | sql/sql_string.h | 2 |
3 files changed, 18 insertions, 10 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 473c4538ab1..0f70ca7a976 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2436,7 +2436,8 @@ General functions for spatial objects String *Item_func_geometry_from_text::val_str(String *str) { Geometry geom; - String *wkt = args[0]->val_str(str); + String arg_val; + String *wkt = args[0]->val_str(&arg_val); GTextReadStream trs(wkt->ptr(), wkt->length()); str->length(0); @@ -2454,7 +2455,8 @@ void Item_func_geometry_from_text::fix_length_and_dec() String *Item_func_as_text::val_str(String *str) { - String *wkt = args[0]->val_str(str); + String arg_val; + String *wkt = args[0]->val_str(&arg_val); Geometry geom; if ((null_value=(args[0]->null_value || @@ -2491,7 +2493,8 @@ String *Item_func_geometry_type::val_str(String *str) String *Item_func_envelope::val_str(String *str) { - String *wkb = args[0]->val_str(str); + String arg_val; + String *wkb = args[0]->val_str(&arg_val); Geometry geom; null_value = args[0]->null_value || @@ -2504,7 +2507,8 @@ String *Item_func_envelope::val_str(String *str) String *Item_func_centroid::val_str(String *str) { - String *wkb = args[0]->val_str(str); + String arg_val; + String *wkb = args[0]->val_str(&arg_val); Geometry geom; null_value = args[0]->null_value || @@ -2522,7 +2526,8 @@ String *Item_func_centroid::val_str(String *str) String *Item_func_spatial_decomp::val_str(String *str) { - String *wkb = args[0]->val_str(str); + String arg_val; + String *wkb = args[0]->val_str(&arg_val); Geometry geom; if ((null_value = (args[0]->null_value || @@ -2530,6 +2535,7 @@ String *Item_func_spatial_decomp::val_str(String *str) return 0; null_value=1; + str->length(0); switch(decomp_func) { case SP_STARTPOINT: @@ -2559,7 +2565,8 @@ ret: String *Item_func_spatial_decomp_n::val_str(String *str) { - String *wkb = args[0]->val_str(str); + String arg_val; + String *wkb = args[0]->val_str(&arg_val); long n = (long) args[1]->val_int(); Geometry geom; @@ -2639,6 +2646,7 @@ String *Item_func_point::val_str(String *str) String *Item_func_spatial_collection::val_str(String *str) { + String arg_value; uint i; null_value=1; @@ -2656,7 +2664,7 @@ String *Item_func_spatial_collection::val_str(String *str) if (args[i]->null_value) goto ret; - String *res = args[i]->val_str(str); + String *res = args[i]->val_str(&arg_value); if ( coll_type == Geometry::wkbGeometryCollection ) { diff --git a/sql/spatial.cc b/sql/spatial.cc index b21d30e4b53..1e2b9f1c512 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -44,7 +44,7 @@ static Geometry::GClassInfo ci_collection[] = IMPLEMENT_GEOM(GGeometryCollection, wkbGeometryCollection, "GEOMETRYCOLLECTION") }; -static Geometry::GClassInfo *ci_collection_end = ci_collection + sizeof(ci_collection); +static Geometry::GClassInfo *ci_collection_end = ci_collection + sizeof(ci_collection)/sizeof(ci_collection[0]); /***************************** Geometry *******************************/ @@ -66,7 +66,7 @@ Geometry::GClassInfo *Geometry::find_class(const char *name, size_t len) cur_rt < ci_collection_end; ++cur_rt) { if ((cur_rt->m_name[len] == 0) && - (strncmp(cur_rt->m_name, name, len) == 0)) + (strncasecmp(cur_rt->m_name, name, len) == 0)) { return cur_rt; } diff --git a/sql/sql_string.h b/sql/sql_string.h index d7447dd6ed6..afcc3d74530 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -225,7 +225,7 @@ public: { Ptr[str_length++] = c; } - void q_append(const uint32 &n) + void q_append(const uint32 n) { int4store(Ptr + str_length, n); str_length += 4; |