Commit 871c5c01 authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ String *Item_func_geometry_from_text::val_str(String *str)
  if ((arg_count == 2) && !args[1]->null_value)
    srid= (uint32)args[1]->val_int();

  str->set_charset(&my_charset_bin);
  if (str->reserve(SRID_SIZE, 512))
    return 0;
  str->length(0);
@@ -71,6 +72,7 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
  if ((arg_count == 2) && !args[1]->null_value)
    srid= (uint32)args[1]->val_int();

  str->set_charset(&my_charset_bin);
  if (str->reserve(SRID_SIZE, 512))
    return 0;
  str->length(0);
@@ -180,6 +182,7 @@ String *Item_func_envelope::val_str(String *str)
    return 0;
  
  srid= uint4korr(swkb->ptr());
  str->set_charset(&my_charset_bin);
  str->length(0);
  if (str->reserve(SRID_SIZE, 512))
    return 0;
@@ -202,6 +205,7 @@ String *Item_func_centroid::val_str(String *str)
					 swkb->length() - SRID_SIZE))))
    return 0;

  str->set_charset(&my_charset_bin);
  if (str->reserve(SRID_SIZE, 512))
    return 0;
  str->length(0);
@@ -232,6 +236,7 @@ String *Item_func_spatial_decomp::val_str(String *str)
    return 0;

  srid= uint4korr(swkb->ptr());
  str->set_charset(&my_charset_bin);
  if (str->reserve(SRID_SIZE, 512))
    goto err;
  str->length(0);
@@ -279,6 +284,7 @@ String *Item_func_spatial_decomp_n::val_str(String *str)
					  swkb->length() - SRID_SIZE)))))
    return 0;

  str->set_charset(&my_charset_bin);
  if (str->reserve(SRID_SIZE, 512))
    goto err;
  srid= uint4korr(swkb->ptr());
@@ -333,6 +339,7 @@ String *Item_func_point::val_str(String *str)
		    str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2))))
    return 0;

  str->set_charset(&my_charset_bin);
  str->length(0);
  str->q_append((char)Geometry::wkb_ndr);
  str->q_append((uint32)Geometry::wkb_point);
@@ -358,6 +365,7 @@ String *Item_func_spatial_collection::val_str(String *str)
  String arg_value;
  uint i;

  str->set_charset(&my_charset_bin);
  str->length(0);
  if (str->reserve(1 + 4 + 4, 512))
    goto err;