diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index 3771245bff9..ff98ae88f45 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -355,3 +355,36 @@ first second w c o e d t i r 121 120 0 0 1 0 0 0 1 0 121 121 1 1 0 1 0 0 1 0 DROP TABLE pt, ls, p, mpt, mls, mp, gc, geo; +CREATE TABLE g1 ( +pt point, +ln linestring, +pg polygon, +mpt multipoint, +mln multilinestring, +mpg multipolygon, +gc geometrycollection, +gm geometry +); +SHOW FIELDS FROM g1; +Field Type Collation Null Key Default Extra +pt point binary YES NULL +ln linestring binary YES NULL +pg polygon binary YES NULL +mpt multipoint binary YES NULL +mln multilinestring binary YES NULL +mpg multipolygon binary YES NULL +gc geometrycollection binary YES NULL +gm geometry binary YES NULL +ALTER TABLE g1 ADD fid INT NOT NULL; +SHOW FIELDS FROM g1; +Field Type Collation Null Key Default Extra +pt point binary YES NULL +ln linestring binary YES NULL +pg polygon binary YES NULL +mpt multipoint binary YES NULL +mln multilinestring binary YES NULL +mpg multipolygon binary YES NULL +gc geometrycollection binary YES NULL +gm geometry binary YES NULL +fid int(11) binary 0 +DROP TABLE g1; diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test index 179dd12e6a3..73ee45e7754 100644 --- a/mysql-test/t/gis.test +++ b/mysql-test/t/gis.test @@ -121,3 +121,22 @@ Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r FROM gc g1, gc g2 ORDER BY first, second; DROP TABLE pt, ls, p, mpt, mls, mp, gc, geo; + +# +# Check that ALTER TABLE doesn't loose geometry type +# +CREATE TABLE g1 ( + pt point, + ln linestring, + pg polygon, + mpt multipoint, + mln multilinestring, + mpg multipolygon, + gc geometrycollection, + gm geometry +); + +SHOW FIELDS FROM g1; +ALTER TABLE g1 ADD fid INT NOT NULL; +SHOW FIELDS FROM g1; +DROP TABLE g1; diff --git a/sql/field.cc b/sql/field.cc index 7d877a02bf7..c84a9f56741 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5475,4 +5475,8 @@ create_field::create_field(Field *old_field,Field *orig_field) def=new Item_string(pos,tmp.length(), charset); } } + if (sql_type == FIELD_TYPE_GEOMETRY) + { + geom_type= ((Field_geom*)old_field)->geom_type; + } }