From b6e05df365b7dce82c22c498114bb1797da0d2a3 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Tue, 20 Jul 2010 12:38:46 -0700 Subject: [PATCH] Fixed bug #607168. The command CREATE TABLE AS SELECT erroneously preserved the virtual properties of the virtual fields from the select list. --- mysql-test/suite/vcol/r/vcol_misc.result | 8 ++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 10 ++++++++++ sql/sql_select.cc | 2 ++ 3 files changed, 20 insertions(+) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 8ee9f5a9f67..1171f41d7a4 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -87,3 +87,11 @@ a v 2002-02-15 00:00:00 0 2000-10-15 00:00:00 1 DROP TABLE t1, t2; +CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL); +CREATE TABLE t2 AS SELECT v1 FROM t1; +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `v1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1,t2; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 87a870181b0..360ed19d578 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -87,3 +87,13 @@ INSERT INTO t2(a) VALUES ('2000-10-15'); SELECT * FROM t2; DROP TABLE t1, t2; + +# +# Bug#607168: CREATE TABLE AS SELECT that returns virtual columns +# + +CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL); +CREATE TABLE t2 AS SELECT v1 FROM t1; +SHOW CREATE TABLE t2; + +DROP TABLE t1,t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2a67259f91d..4bbcf63750a 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9564,6 +9564,8 @@ Field *create_tmp_field_from_field(THD *thd, Field *org_field, table->s->db_create_options|= HA_OPTION_PACK_RECORD; else if (org_field->type() == FIELD_TYPE_DOUBLE) ((Field_double *) new_field)->not_fixed= TRUE; + new_field->vcol_info= 0; + new_field->stored_in_db= TRUE; } return new_field; }