summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/create.result15
-rw-r--r--mysql-test/t/create.test8
-rw-r--r--sql/sql_table.cc14
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);