summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholyfoot@deer.(none) <>2006-06-22 22:11:27 +0500
committerholyfoot@deer.(none) <>2006-06-22 22:11:27 +0500
commit36cea7d4fe44bcaffbd434e143b3a72ea62b98fc (patch)
treeeae218212f618dd122fc6b4577476b4ebd0ae5f5
parent737e166403d7e92c2c32eb6ad6a9ee0da207e4a2 (diff)
downloadmariadb-git-36cea7d4fe44bcaffbd434e143b3a72ea62b98fc.tar.gz
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.
-rw-r--r--mysql-test/r/gis.result10
-rw-r--r--mysql-test/t/gis.test7
-rw-r--r--sql/item_geofunc.h2
3 files changed, 19 insertions, 0 deletions
diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result
index bf2f3e2bf03..f7066e7edca 100644
--- a/mysql-test/r/gis.result
+++ b/mysql-test/r/gis.result
@@ -661,3 +661,13 @@ POINT(10 10)
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
(asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))))
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;
diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test
index 3eb17f3a484..b66b97c2c41 100644
--- a/mysql-test/t/gis.test
+++ b/mysql-test/t/gis.test
@@ -364,3 +364,10 @@ select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000))));
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
# 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;
diff --git a/sql/item_geofunc.h b/sql/item_geofunc.h
index 5f060416ff3..a466b606dc1 100644
--- a/sql/item_geofunc.h
+++ b/sql/item_geofunc.h
@@ -32,6 +32,7 @@ public:
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) {}
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
@@ -67,6 +68,7 @@ public:
Item_func_as_wkb(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "aswkb"; }
String *val_str(String *);
+ enum_field_types field_type() const { return MYSQL_TYPE_BLOB; }
};
class Item_func_geometry_type: public Item_str_func