Commit 871c5c01 authored by unknown's avatar unknown

Fix for bug #5136(Geometry object corrupted after the query)


sql/item_geofunc.cc:
  We should force geometry's charset to be BINARY
parent 8f3564d0
...@@ -44,6 +44,7 @@ String *Item_func_geometry_from_text::val_str(String *str) ...@@ -44,6 +44,7 @@ String *Item_func_geometry_from_text::val_str(String *str)
if ((arg_count == 2) && !args[1]->null_value) if ((arg_count == 2) && !args[1]->null_value)
srid= (uint32)args[1]->val_int(); srid= (uint32)args[1]->val_int();
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
return 0; return 0;
str->length(0); str->length(0);
...@@ -71,6 +72,7 @@ String *Item_func_geometry_from_wkb::val_str(String *str) ...@@ -71,6 +72,7 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
if ((arg_count == 2) && !args[1]->null_value) if ((arg_count == 2) && !args[1]->null_value)
srid= (uint32)args[1]->val_int(); srid= (uint32)args[1]->val_int();
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
return 0; return 0;
str->length(0); str->length(0);
...@@ -180,6 +182,7 @@ String *Item_func_envelope::val_str(String *str) ...@@ -180,6 +182,7 @@ String *Item_func_envelope::val_str(String *str)
return 0; return 0;
srid= uint4korr(swkb->ptr()); srid= uint4korr(swkb->ptr());
str->set_charset(&my_charset_bin);
str->length(0); str->length(0);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
return 0; return 0;
...@@ -202,6 +205,7 @@ String *Item_func_centroid::val_str(String *str) ...@@ -202,6 +205,7 @@ String *Item_func_centroid::val_str(String *str)
swkb->length() - SRID_SIZE)))) swkb->length() - SRID_SIZE))))
return 0; return 0;
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
return 0; return 0;
str->length(0); str->length(0);
...@@ -232,6 +236,7 @@ String *Item_func_spatial_decomp::val_str(String *str) ...@@ -232,6 +236,7 @@ String *Item_func_spatial_decomp::val_str(String *str)
return 0; return 0;
srid= uint4korr(swkb->ptr()); srid= uint4korr(swkb->ptr());
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
goto err; goto err;
str->length(0); str->length(0);
...@@ -279,6 +284,7 @@ String *Item_func_spatial_decomp_n::val_str(String *str) ...@@ -279,6 +284,7 @@ String *Item_func_spatial_decomp_n::val_str(String *str)
swkb->length() - SRID_SIZE))))) swkb->length() - SRID_SIZE)))))
return 0; return 0;
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512)) if (str->reserve(SRID_SIZE, 512))
goto err; goto err;
srid= uint4korr(swkb->ptr()); srid= uint4korr(swkb->ptr());
...@@ -333,6 +339,7 @@ String *Item_func_point::val_str(String *str) ...@@ -333,6 +339,7 @@ String *Item_func_point::val_str(String *str)
str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2)))) str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2))))
return 0; return 0;
str->set_charset(&my_charset_bin);
str->length(0); str->length(0);
str->q_append((char)Geometry::wkb_ndr); str->q_append((char)Geometry::wkb_ndr);
str->q_append((uint32)Geometry::wkb_point); str->q_append((uint32)Geometry::wkb_point);
...@@ -358,6 +365,7 @@ String *Item_func_spatial_collection::val_str(String *str) ...@@ -358,6 +365,7 @@ String *Item_func_spatial_collection::val_str(String *str)
String arg_value; String arg_value;
uint i; uint i;
str->set_charset(&my_charset_bin);
str->length(0); str->length(0);
if (str->reserve(1 + 4 + 4, 512)) if (str->reserve(1 + 4 + 4, 512))
goto err; goto err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment