From 7251e9dbd8758a0e6e9675a042d28bda84dfddf6 Mon Sep 17 00:00:00 2001 From: "georg@lmy002.wdf.sap.corp" <> Date: Wed, 3 Aug 2005 07:29:48 +0200 Subject: [PATCH] Fix for bug #6859 (after Sanja's review) Added check which throws ER_WRONG_OBJECT error in case the .frm doesn't contain a valid table type (e.g. view or trigger) --- mysql-test/r/create.result | 7 +++++++ mysql-test/t/create.test | 10 ++++++++++ sql/sql_table.cc | 9 +++++++++ 3 files changed, 26 insertions(+) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index eba8dddfe72..293be36e5ab 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -602,3 +602,10 @@ drop database mysqltest; create table test.t1 like x; ERROR 42000: Incorrect database name 'NULL' drop table if exists test.t1; +create database mysqltest; +use mysqltest; +create view v1 as select 'foo' from dual; +create table t1 like v1; +ERROR HY000: 'mysqltest.v1' is not a table +drop view v1; +drop database mysqltest; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 4e86a51e131..bc281d1e027 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -515,4 +515,14 @@ create table test.t1 like x; drop table if exists test.t1; --enable_warnings +# +# Bug #6859: Bogus error message on attempt to CREATE TABLE t LIKE view +# +create database mysqltest; +use mysqltest; +create view v1 as select 'foo' from dual; +--error 1347 +create table t1 like v1; +drop view v1; +drop database mysqltest; # End of 4.1 tests diff --git a/sql/sql_table.cc b/sql/sql_table.cc index b5d48f3dc3b..1437c1d382c 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2629,6 +2629,15 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, } } + /* + create like should be not allowed for Views, Triggers, ... + */ + if (mysql_frm_type(src_path) != FRMTYPE_TABLE) + { + my_error(ER_WRONG_OBJECT, MYF(0), src_db, src_table, "a table"); + goto err; + } + /* Validate the destination table