List:Commits« Previous MessageNext Message »
From:holyfoot Date:July 4 2006 9:57am
Subject:bk commit into 5.0 tree (holyfoot:1.2212) BUG#14807
View as plain text  
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#14807holyfoot4 Jul