Below is the list of changes that have just been committed into a local
5.0 repository of hf. When hf does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2212 06/07/04 12:56:53 holyfoot@deer.(none) +4 -0
bug #14807 (GeomFromText() should return MYSQL_TYPE_GEOMETRY)
we didn't have code creating GEOMETRY-type fields from Items (expression results)
So i added this code
sql/item_geofunc.h
1.12 06/07/04 12:53:54 holyfoot@stripped +5 -0
tmp_table_field() and get_geometry_type() declared
sql/item_geofunc.cc
1.27 06/07/04 12:53:50 holyfoot@stripped +28 -0
Item_geometry_func::tmp_table_field implemented
mysql-test/t/gis.test
1.28 06/07/04 12:53:46 holyfoot@stripped +7 -1
testcase added
mysql-test/r/gis.result
1.33 06/07/04 12:53:38 holyfoot@stripped +7 -2
test result fixed
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: holyfoot
# Host: deer.(none)
# Root: /home/hf/work/mysql-5.0.14807
--- 1.32/mysql-test/r/gis.result Tue Jun 27 16:58:55 2006
+++ 1.33/mysql-test/r/gis.result Tue Jul 4 12:53:38 2006
@@ -574,11 +574,11 @@
INSERT INTO t1 VALUES(GeomFromText('POINT(580848489 219587743)'));
INSERT INTO t1 VALUES(GeomFromText('POINT(11247614 782797569)'));
drop table t1;
-create table t1 select POINT(1,3);
+create table t1 select GeomFromWKB(POINT(1,3));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `POINT(1,3)` longblob NOT NULL
+ `GeomFromWKB(POINT(1,3))` geometry NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
CREATE TABLE `t1` (`object_id` bigint(20) unsigned NOT NULL default '0', `geo`
@@ -703,4 +703,9 @@
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;
+create table t1 select GeomFromText('point(1 1)');
+desc t1;
+Field Type Null Key Default Extra
+GeomFromText('point(1 1)') geometry NO
drop table t1;
--- 1.27/mysql-test/t/gis.test Tue Jun 27 16:58:55 2006
+++ 1.28/mysql-test/t/gis.test Tue Jul 4 12:53:46 2006
@@ -281,7 +281,7 @@
INSERT INTO t1 VALUES(GeomFromText('POINT(11247614 782797569)'));
drop table t1;
-create table t1 select POINT(1,3);
+create table t1 select GeomFromWKB(POINT(1,3));
show create table t1;
drop table t1;
@@ -416,3 +416,9 @@
select asbinary(g) from t1;
--disable_metadata
drop table t1;
+
+
+create table t1 select GeomFromText('point(1 1)');
+desc t1;
+drop table t1;
+
--- 1.26/sql/item_geofunc.cc Mon Oct 31 13:42:28 2005
+++ 1.27/sql/item_geofunc.cc Tue Jul 4 12:53:50 2006
@@ -25,6 +25,12 @@
#ifdef HAVE_SPATIAL
#include <m_ctype.h>
+Field *Item_geometry_func::tmp_table_field(TABLE *t_arg)
+{
+ return new Field_geom(max_length, maybe_null, name, t_arg,
+ (Field::geometry_type) get_geometry_type());
+}
+
void Item_geometry_func::fix_length_and_dec()
{
collation.set(&my_charset_bin);
@@ -32,6 +38,10 @@
max_length=MAX_BLOB_WIDTH;
}
+int Item_geometry_func::get_geometry_type() const
+{
+ return (int)Field::GEOM_GEOMETRY;
+}
String *Item_func_geometry_from_text::val_str(String *str)
{
@@ -152,6 +162,12 @@
}
+int Item_func_envelope::get_geometry_type() const
+{
+ return (int) Field::GEOM_POLYGON;
+}
+
+
String *Item_func_envelope::val_str(String *str)
{
DBUG_ASSERT(fixed == 1);
@@ -176,6 +192,12 @@
}
+int Item_func_centroid::get_geometry_type() const
+{
+ return (int) Field::GEOM_POINT;
+}
+
+
String *Item_func_centroid::val_str(String *str)
{
DBUG_ASSERT(fixed == 1);
@@ -308,6 +330,12 @@
/*
* Concatenate doubles into Point
*/
+
+
+int Item_func_point::get_geometry_type() const
+{
+ return (int) Field::GEOM_POINT;
+}
String *Item_func_point::val_str(String *str)
--- 1.11/sql/item_geofunc.h Mon Jun 26 22:22:43 2006
+++ 1.12/sql/item_geofunc.h Tue Jul 4 12:53:54 2006
@@ -33,6 +33,8 @@
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; }
+ Field *tmp_table_field(TABLE *t_arg);
+ virtual int get_geometry_type() const;
};
class Item_func_geometry_from_text: public Item_geometry_func
@@ -89,6 +91,7 @@
Item_func_centroid(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "centroid"; }
String *val_str(String *);
+ int get_geometry_type() const;
};
class Item_func_envelope: public Item_geometry_func
@@ -97,6 +100,7 @@
Item_func_envelope(Item *a): Item_geometry_func(a) {}
const char *func_name() const { return "envelope"; }
String *val_str(String *);
+ int get_geometry_type() const;
};
class Item_func_point: public Item_geometry_func
@@ -106,6 +110,7 @@
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 *);
+ int get_geometry_type() const;
};
class Item_func_spatial_decomp: public Item_geometry_func
| Thread |
|---|
| • bk commit into 5.0 tree (holyfoot:1.2212) BUG#14807 | holyfoot | 4 Jul |