summaryrefslogtreecommitdiff
path: root/sql/item_geofunc.h
diff options
context:
space:
mode:
authorhf@deer.(none) <>2004-09-22 22:36:53 +0500
committerhf@deer.(none) <>2004-09-22 22:36:53 +0500
commitd8c626eb53fa538365b8ddb6bebd0ee00390fdf3 (patch)
treeaa41988964c204abc8e7cd531addfd35f09a1f7d /sql/item_geofunc.h
parentb40ca996681155305ec0dcc708cce023e5a4ca9e (diff)
downloadmariadb-git-d8c626eb53fa538365b8ddb6bebd0ee00390fdf3.tar.gz
Additional fix for bug #5136 (Geometry object is corrupted when queried)
CREATE TABLE t1 SELECT POINT(1,2); fixed
Diffstat (limited to 'sql/item_geofunc.h')
-rw-r--r--sql/item_geofunc.h62
1 files changed, 32 insertions, 30 deletions
diff --git a/sql/item_geofunc.h b/sql/item_geofunc.h
index a1f36130152..79e4f804a04 100644
--- a/sql/item_geofunc.h
+++ b/sql/item_geofunc.h
@@ -23,24 +23,33 @@
#pragma interface /* gcc class implementation */
#endif
-class Item_func_geometry_from_text: public Item_str_func
+class Item_geometry_func: public Item_str_func
{
public:
- Item_func_geometry_from_text(Item *a) :Item_str_func(a) {}
- Item_func_geometry_from_text(Item *a, Item *srid) :Item_str_func(a, srid) {}
+ Item_geometry_func() :Item_str_func() {}
+ Item_geometry_func(Item *a) :Item_str_func(a) {}
+ Item_geometry_func(Item *a,Item *b) :Item_str_func(a,b) {}
+ 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();
+};
+
+class Item_func_geometry_from_text: public Item_geometry_func
+{
+public:
+ Item_func_geometry_from_text(Item *a) :Item_geometry_func(a) {}
+ Item_func_geometry_from_text(Item *a, Item *srid) :Item_geometry_func(a, srid) {}
const char *func_name() const { return "geometryfromtext"; }
String *val_str(String *);
- void fix_length_and_dec();
};
-class Item_func_geometry_from_wkb: public Item_str_func
+class Item_func_geometry_from_wkb: public Item_geometry_func
{
public:
- Item_func_geometry_from_wkb(Item *a): Item_str_func(a) {}
- Item_func_geometry_from_wkb(Item *a, Item *srid): Item_str_func(a, srid) {}
+ Item_func_geometry_from_wkb(Item *a): Item_geometry_func(a) {}
+ Item_func_geometry_from_wkb(Item *a, Item *srid): Item_geometry_func(a, srid) {}
const char *func_name() const { return "geometryfromwkb"; }
String *val_str(String *);
- void fix_length_and_dec();
};
class Item_func_as_wkt: public Item_str_func
@@ -52,13 +61,12 @@ public:
void fix_length_and_dec();
};
-class Item_func_as_wkb: public Item_str_func
+class Item_func_as_wkb: public Item_geometry_func
{
public:
- Item_func_as_wkb(Item *a): Item_str_func(a) {}
+ Item_func_as_wkb(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "aswkb"; }
String *val_str(String *);
- void fix_length_and_dec();
};
class Item_func_geometry_type: public Item_str_func
@@ -73,40 +81,37 @@ public:
};
};
-class Item_func_centroid: public Item_str_func
+class Item_func_centroid: public Item_geometry_func
{
public:
- Item_func_centroid(Item *a): Item_str_func(a) {}
+ Item_func_centroid(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "centroid"; }
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
};
-class Item_func_envelope: public Item_str_func
+class Item_func_envelope: public Item_geometry_func
{
public:
- Item_func_envelope(Item *a): Item_str_func(a) {}
+ Item_func_envelope(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "envelope"; }
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
};
-class Item_func_point: public Item_str_func
+class Item_func_point: public Item_geometry_func
{
public:
- Item_func_point(Item *a, Item *b): Item_str_func(a, b) {}
- Item_func_point(Item *a, Item *b, Item *srid): Item_str_func(a, b, srid) {}
+ Item_func_point(Item *a, Item *b): Item_geometry_func(a, b) {}
+ Item_func_point(Item *a, Item *b, Item *srid): Item_geometry_func(a, b, srid) {}
const char *func_name() const { return "point"; }
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
};
-class Item_func_spatial_decomp: public Item_str_func
+class Item_func_spatial_decomp: public Item_geometry_func
{
enum Functype decomp_func;
public:
Item_func_spatial_decomp(Item *a, Item_func::Functype ft) :
- Item_str_func(a) { decomp_func = ft; }
+ Item_geometry_func(a) { decomp_func = ft; }
const char *func_name() const
{
switch (decomp_func)
@@ -123,15 +128,14 @@ public:
}
}
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
};
-class Item_func_spatial_decomp_n: public Item_str_func
+class Item_func_spatial_decomp_n: public Item_geometry_func
{
enum Functype decomp_func_n;
public:
Item_func_spatial_decomp_n(Item *a, Item *b, Item_func::Functype ft):
- Item_str_func(a, b) { decomp_func_n = ft; }
+ Item_geometry_func(a, b) { decomp_func_n = ft; }
const char *func_name() const
{
switch (decomp_func_n)
@@ -148,10 +152,9 @@ public:
}
}
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
};
-class Item_func_spatial_collection: public Item_str_func
+class Item_func_spatial_collection: public Item_geometry_func
{
String tmp_value;
enum Geometry::wkbType coll_type;
@@ -159,13 +162,12 @@ class Item_func_spatial_collection: public Item_str_func
public:
Item_func_spatial_collection(
List<Item> &list, enum Geometry::wkbType ct, enum Geometry::wkbType it):
- Item_str_func(list)
+ Item_geometry_func(list)
{
coll_type=ct;
item_type=it;
}
String *val_str(String *);
- void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
const char *func_name() const { return "multipoint"; }
};