mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.5371
This commit is contained in:
@@ -485,3 +485,10 @@ MBRContains(GeomFromText('Polygon((0 0, 0 7, 7 7, 7 0, 0 0))'), a);
|
|||||||
AsText(a)
|
AsText(a)
|
||||||
POINT(1 1)
|
POINT(1 1)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 select POINT(1,3);
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`POINT(1,3)` longblob NOT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
@@ -190,3 +190,7 @@ select AsText(a) from t1 where
|
|||||||
and
|
and
|
||||||
MBRContains(GeomFromText('Polygon((0 0, 0 7, 7 7, 7 0, 0 0))'), a);
|
MBRContains(GeomFromText('Polygon((0 0, 0 7, 7 7, 7 0, 0 0))'), a);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 select POINT(1,3);
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
@@ -27,6 +27,13 @@
|
|||||||
#include "sql_acl.h"
|
#include "sql_acl.h"
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
|
|
||||||
|
void Item_geometry_func::fix_length_and_dec()
|
||||||
|
{
|
||||||
|
collation.set(&my_charset_bin);
|
||||||
|
decimals=0;
|
||||||
|
max_length=MAX_BLOB_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
String *Item_func_geometry_from_text::val_str(String *str)
|
String *Item_func_geometry_from_text::val_str(String *str)
|
||||||
{
|
{
|
||||||
@@ -44,6 +51,7 @@ String *Item_func_geometry_from_text::val_str(String *str)
|
|||||||
if ((arg_count == 2) && !args[1]->null_value)
|
if ((arg_count == 2) && !args[1]->null_value)
|
||||||
srid= (uint32)args[1]->val_int();
|
srid= (uint32)args[1]->val_int();
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
return 0;
|
return 0;
|
||||||
str->length(0);
|
str->length(0);
|
||||||
@@ -54,12 +62,6 @@ String *Item_func_geometry_from_text::val_str(String *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Item_func_geometry_from_text::fix_length_and_dec()
|
|
||||||
{
|
|
||||||
max_length=MAX_BLOB_WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
String *Item_func_geometry_from_wkb::val_str(String *str)
|
String *Item_func_geometry_from_wkb::val_str(String *str)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
@@ -71,6 +73,7 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
|
|||||||
if ((arg_count == 2) && !args[1]->null_value)
|
if ((arg_count == 2) && !args[1]->null_value)
|
||||||
srid= (uint32)args[1]->val_int();
|
srid= (uint32)args[1]->val_int();
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
return 0;
|
return 0;
|
||||||
str->length(0);
|
str->length(0);
|
||||||
@@ -84,12 +87,6 @@ String *Item_func_geometry_from_wkb::val_str(String *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Item_func_geometry_from_wkb::fix_length_and_dec()
|
|
||||||
{
|
|
||||||
max_length=MAX_BLOB_WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
String *Item_func_as_wkt::val_str(String *str)
|
String *Item_func_as_wkt::val_str(String *str)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
@@ -138,12 +135,6 @@ String *Item_func_as_wkb::val_str(String *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Item_func_as_wkb::fix_length_and_dec()
|
|
||||||
{
|
|
||||||
max_length= MAX_BLOB_WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
String *Item_func_geometry_type::val_str(String *str)
|
String *Item_func_geometry_type::val_str(String *str)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
@@ -180,6 +171,7 @@ String *Item_func_envelope::val_str(String *str)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
srid= uint4korr(swkb->ptr());
|
srid= uint4korr(swkb->ptr());
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
str->length(0);
|
str->length(0);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
return 0;
|
return 0;
|
||||||
@@ -202,6 +194,7 @@ String *Item_func_centroid::val_str(String *str)
|
|||||||
swkb->length() - SRID_SIZE))))
|
swkb->length() - SRID_SIZE))))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
return 0;
|
return 0;
|
||||||
str->length(0);
|
str->length(0);
|
||||||
@@ -232,6 +225,7 @@ String *Item_func_spatial_decomp::val_str(String *str)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
srid= uint4korr(swkb->ptr());
|
srid= uint4korr(swkb->ptr());
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
goto err;
|
goto err;
|
||||||
str->length(0);
|
str->length(0);
|
||||||
@@ -279,6 +273,7 @@ String *Item_func_spatial_decomp_n::val_str(String *str)
|
|||||||
swkb->length() - SRID_SIZE)))))
|
swkb->length() - SRID_SIZE)))))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
if (str->reserve(SRID_SIZE, 512))
|
if (str->reserve(SRID_SIZE, 512))
|
||||||
goto err;
|
goto err;
|
||||||
srid= uint4korr(swkb->ptr());
|
srid= uint4korr(swkb->ptr());
|
||||||
@@ -333,6 +328,7 @@ String *Item_func_point::val_str(String *str)
|
|||||||
str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2))))
|
str->realloc(1 + 4 + SIZEOF_STORED_DOUBLE*2))))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
str->length(0);
|
str->length(0);
|
||||||
str->q_append((char)Geometry::wkb_ndr);
|
str->q_append((char)Geometry::wkb_ndr);
|
||||||
str->q_append((uint32)Geometry::wkb_point);
|
str->q_append((uint32)Geometry::wkb_point);
|
||||||
@@ -358,6 +354,7 @@ String *Item_func_spatial_collection::val_str(String *str)
|
|||||||
String arg_value;
|
String arg_value;
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
|
str->set_charset(&my_charset_bin);
|
||||||
str->length(0);
|
str->length(0);
|
||||||
if (str->reserve(1 + 4 + 4, 512))
|
if (str->reserve(1 + 4 + 4, 512))
|
||||||
goto err;
|
goto err;
|
||||||
|
@@ -23,24 +23,33 @@
|
|||||||
#pragma interface /* gcc class implementation */
|
#pragma interface /* gcc class implementation */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class Item_func_geometry_from_text: public Item_str_func
|
class Item_geometry_func: public Item_str_func
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Item_func_geometry_from_text(Item *a) :Item_str_func(a) {}
|
Item_geometry_func() :Item_str_func() {}
|
||||||
Item_func_geometry_from_text(Item *a, Item *srid) :Item_str_func(a, srid) {}
|
Item_geometry_func(Item *a) :Item_str_func(a) {}
|
||||||
const char *func_name() const { return "geometryfromtext"; }
|
Item_geometry_func(Item *a,Item *b) :Item_str_func(a,b) {}
|
||||||
String *val_str(String *);
|
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();
|
void fix_length_and_dec();
|
||||||
};
|
};
|
||||||
|
|
||||||
class Item_func_geometry_from_wkb: public Item_str_func
|
class Item_func_geometry_from_text: public Item_geometry_func
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Item_func_geometry_from_wkb(Item *a): Item_str_func(a) {}
|
Item_func_geometry_from_text(Item *a) :Item_geometry_func(a) {}
|
||||||
Item_func_geometry_from_wkb(Item *a, Item *srid): Item_str_func(a, srid) {}
|
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 *);
|
||||||
|
};
|
||||||
|
|
||||||
|
class Item_func_geometry_from_wkb: public Item_geometry_func
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
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"; }
|
const char *func_name() const { return "geometryfromwkb"; }
|
||||||
String *val_str(String *);
|
String *val_str(String *);
|
||||||
void fix_length_and_dec();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class Item_func_as_wkt: public Item_str_func
|
class Item_func_as_wkt: public Item_str_func
|
||||||
@@ -52,13 +61,12 @@ public:
|
|||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
};
|
};
|
||||||
|
|
||||||
class Item_func_as_wkb: public Item_str_func
|
class Item_func_as_wkb: public Item_geometry_func
|
||||||
{
|
{
|
||||||
public:
|
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"; }
|
const char *func_name() const { return "aswkb"; }
|
||||||
String *val_str(String *);
|
String *val_str(String *);
|
||||||
void fix_length_and_dec();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class Item_func_geometry_type: public Item_str_func
|
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:
|
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"; }
|
const char *func_name() const { return "centroid"; }
|
||||||
String *val_str(String *);
|
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:
|
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"; }
|
const char *func_name() const { return "envelope"; }
|
||||||
String *val_str(String *);
|
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:
|
public:
|
||||||
Item_func_point(Item *a, Item *b): Item_str_func(a, b) {}
|
Item_func_point(Item *a, Item *b): Item_geometry_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 *srid): Item_geometry_func(a, b, srid) {}
|
||||||
const char *func_name() const { return "point"; }
|
const char *func_name() const { return "point"; }
|
||||||
String *val_str(String *);
|
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;
|
enum Functype decomp_func;
|
||||||
public:
|
public:
|
||||||
Item_func_spatial_decomp(Item *a, Item_func::Functype ft) :
|
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
|
const char *func_name() const
|
||||||
{
|
{
|
||||||
switch (decomp_func)
|
switch (decomp_func)
|
||||||
@@ -123,15 +128,14 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
String *val_str(String *);
|
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;
|
enum Functype decomp_func_n;
|
||||||
public:
|
public:
|
||||||
Item_func_spatial_decomp_n(Item *a, Item *b, Item_func::Functype ft):
|
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
|
const char *func_name() const
|
||||||
{
|
{
|
||||||
switch (decomp_func_n)
|
switch (decomp_func_n)
|
||||||
@@ -148,10 +152,9 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
String *val_str(String *);
|
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;
|
String tmp_value;
|
||||||
enum Geometry::wkbType coll_type;
|
enum Geometry::wkbType coll_type;
|
||||||
@@ -159,13 +162,12 @@ class Item_func_spatial_collection: public Item_str_func
|
|||||||
public:
|
public:
|
||||||
Item_func_spatial_collection(
|
Item_func_spatial_collection(
|
||||||
List<Item> &list, enum Geometry::wkbType ct, enum Geometry::wkbType it):
|
List<Item> &list, enum Geometry::wkbType ct, enum Geometry::wkbType it):
|
||||||
Item_str_func(list)
|
Item_geometry_func(list)
|
||||||
{
|
{
|
||||||
coll_type=ct;
|
coll_type=ct;
|
||||||
item_type=it;
|
item_type=it;
|
||||||
}
|
}
|
||||||
String *val_str(String *);
|
String *val_str(String *);
|
||||||
void fix_length_and_dec(){max_length=MAX_BLOB_WIDTH;}
|
|
||||||
const char *func_name() const { return "multipoint"; }
|
const char *func_name() const { return "multipoint"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user