Commit 36cea7d4 authored by holyfoot@deer.(none)'s avatar holyfoot@deer.(none)

bug #10166 (Signed byte values cause data to be padded)

The AsBinary function returns VARCHAR data type with binary collation.
It can cause problem for clients that treat that kind of data as
different from BLOB type.
So now AsBinary returns BLOB.
parent 737e1664
...@@ -661,3 +661,13 @@ POINT(10 10) ...@@ -661,3 +661,13 @@ POINT(10 10)
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))); select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
(asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))) (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))))
POINT(10 10) POINT(10 10)
create table t1 (g GEOMETRY);
select * from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 g g 255 4294967295 0 Y 144 0 63
g
select asbinary(g) from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def asbinary(g) 252 8192 0 Y 128 0 63
asbinary(g)
drop table t1;
...@@ -364,3 +364,10 @@ select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000)))); ...@@ -364,3 +364,10 @@ select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000))));
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))); select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
# End of 4.1 tests # End of 4.1 tests
--enable_metadata
create table t1 (g GEOMETRY);
select * from t1;
select asbinary(g) from t1;
--disable_metadata
drop table t1;
...@@ -32,6 +32,7 @@ public: ...@@ -32,6 +32,7 @@ public:
Item_geometry_func(Item *a,Item *b,Item *c) :Item_str_func(a,b,c) {} Item_geometry_func(Item *a,Item *b,Item *c) :Item_str_func(a,b,c) {}
Item_geometry_func(List<Item> &list) :Item_str_func(list) {} Item_geometry_func(List<Item> &list) :Item_str_func(list) {}
void fix_length_and_dec(); void fix_length_and_dec();
enum_field_types field_type() const { return MYSQL_TYPE_GEOMETRY; }
}; };
class Item_func_geometry_from_text: public Item_geometry_func class Item_func_geometry_from_text: public Item_geometry_func
...@@ -67,6 +68,7 @@ public: ...@@ -67,6 +68,7 @@ public:
Item_func_as_wkb(Item *a): Item_geometry_func(a) {} Item_func_as_wkb(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "aswkb"; } const char *func_name() const { return "aswkb"; }
String *val_str(String *); String *val_str(String *);
enum_field_types field_type() const { return MYSQL_TYPE_BLOB; }
}; };
class Item_func_geometry_type: public Item_str_func class Item_func_geometry_type: public Item_str_func
......
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