mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Fix for bug #5136(Geometry object corrupted after the query)
sql/item_geofunc.cc: We should force geometry's charset to be BINARY
This commit is contained in:
parent
8f3564d02d
commit
871c5c0175
1 changed files with 8 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue