diff options
-rw-r--r-- | mysql-test/r/create.result | 15 | ||||
-rw-r--r-- | mysql-test/t/create.test | 8 | ||||
-rw-r--r-- | sql/sql_table.cc | 14 |
3 files changed, 27 insertions, 10 deletions
diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index e1c5bb61da9..6bfda427f78 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -198,9 +198,9 @@ t3 CREATE TABLE `t3` ( ) TYPE=MyISAM CHARSET=latin1 select * from t3; id name -drop table t3; +drop table t2, t3; +drop database if exists test_$1; create database test_$1; -drop table if exists test_$1.t3; create table test_$1.t3 like t1; create temporary table t3 like test_$1.t3; show create table t3; @@ -209,6 +209,15 @@ t3 CREATE TEMPORARY TABLE `t3` ( `id` int(11) NOT NULL default '0', `name` char(20) character set latin1 default NULL ) TYPE=MyISAM CHARSET=latin1 +create table t2 like t3; +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `id` int(11) NOT NULL default '0', + `name` char(20) character set latin1 default NULL +) TYPE=MyISAM CHARSET=latin1 +select * from t2; +id name create table t3 like t1; create table t3 like test_$1.t3; Table 't3' already exists @@ -218,6 +227,8 @@ create table t3 like non_existing_table; Unknown table 'non_existing_table' create temporary table t3 like t1; Table 't3' already exists +create table t3 like `a/a`; +Incorrect table name 'a/a' drop table t1, t2, t3; drop table t3; drop database test_$1; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index f5f5116b429..e057ffaebb0 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -134,18 +134,22 @@ select * from t3; drop table t3; show create table t3; select * from t3; -drop table t3; +drop table t2, t3; +drop database if exists test_$1; create database test_$1; -drop table if exists test_$1.t3; create table test_$1.t3 like t1; create temporary table t3 like test_$1.t3; show create table t3; +create table t2 like t3; +show create table t2; +select * from t2; create table t3 like t1; !$1050 create table t3 like test_$1.t3; --error 1044,1 create table non_existing_database.t1 like t1; !$1051 create table t3 like non_existing_table; !$1050 create temporary table t3 like t1; +!$1103 create table t3 like `a/a`; drop table t1, t2, t3; drop table t3; drop database test_$1; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 7cb1cee7e3c..05090cdf3e5 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1413,8 +1413,8 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table, check_table_name(src_table,table_ident->table.length)) || table_ident->db.str && check_db_name((src_db= table_ident->db.str))) { - net_printf(thd,ER_WRONG_TABLE_NAME,src_table); - DBUG_RETURN(0); + my_error(ER_WRONG_TABLE_NAME, MYF(0), src_table); + DBUG_RETURN(-1); } if ((tmp_table= find_temporary_table(thd, src_db, src_table))) @@ -1470,14 +1470,16 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table, { if (err || !open_temporary_table(thd, dst_path, db, table_name, 1)) { - (void) rm_temporary_table(create_info->db_type, dst_path); - DBUG_RETURN(-1); + (void) rm_temporary_table(create_info->db_type, + dst_path); /* purecov: inspected */ + DBUG_RETURN(-1); /* purecov: inspected */ } } else if (err) { - (void) quick_rm_table(create_info->db_type, db, table_name); - DBUG_RETURN(-1); + (void) quick_rm_table(create_info->db_type, db, + table_name); /* purecov: inspected */ + DBUG_RETURN(-1); /* purecov: inspected */ } DBUG_RETURN(0); |