summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/t/lowercase_view.test68
-rw-r--r--mysql-test/t/view.test72
-rw-r--r--sql/item.cc5
-rw-r--r--sql/sql_base.cc6
-rw-r--r--sql/sql_insert.cc4
5 files changed, 74 insertions, 81 deletions
diff --git a/mysql-test/t/lowercase_view.test b/mysql-test/t/lowercase_view.test
index 846c828fb09..e9cc26bec18 100644
--- a/mysql-test/t/lowercase_view.test
+++ b/mysql-test/t/lowercase_view.test
@@ -23,29 +23,29 @@ create table t2aA (col1 int);
create view v1Aa as select * from t1aA;
create view v2aA as select * from v1aA;
create view v3Aa as select v2Aa.col1 from v2aA,t2Aa where v2Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update v2aA set col1 = (select max(col1) from v1Aa);
--- error 1423
+-- error 1443
update v2Aa set col1 = (select max(col1) from t1Aa);
-- error 1093
update v2aA set col1 = (select max(col1) from v2Aa);
--- error 1423
+-- error 1443
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v1Aa) where t1aA.col1 = t2aA.col1;
-- error 1093
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from t1aA) where v2aA.col1 = t2aA.col1;
-- error 1093
update t1Aa,t2Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from t1Aa) where v1aA.col1 = t2aA.col1;
-- error 1093
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from t1aA) where v2Aa.col1 = t2aA.col1;
@@ -55,71 +55,71 @@ update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 =
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from t1Aa) where v1Aa.col1 = t2aA.col1;
-- error 1093
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
--- error 1423
+-- error 1443
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
--- error 1423
+-- error 1443
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
-- error 1093
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
--- error 1423
+-- error 1443
delete from v2Aa where col1 = (select max(col1) from v1Aa);
--- error 1423
+-- error 1443
delete from v2aA where col1 = (select max(col1) from t1Aa);
-- error 1093
delete from v2Aa where col1 = (select max(col1) from v2aA);
--- error 1423
+-- error 1443
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
delete t1aA from t1Aa,t2Aa where (select max(col1) from v1Aa) > 0 and t1aA.col1 = t2aA.col1;
-- error 1093
delete v1aA from v1Aa,t2Aa where (select max(col1) from v1aA) > 0 and v1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
delete v2aA from v2Aa,t2Aa where (select max(col1) from t1Aa) > 0 and v2aA.col1 = t2aA.col1;
-- error 1093
delete t1aA from t1Aa,t2Aa where (select max(col1) from t1aA) > 0 and t1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
delete v1aA from v1Aa,t2Aa where (select max(col1) from t1aA) > 0 and v1aA.col1 = t2aA.col1;
-- error 1093
delete v2Aa from v2aA,t2Aa where (select max(col1) from v2Aa) > 0 and v2aA.col1 = t2aA.col1;
--- error 1423
+-- error 1443
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
--- error 1423
+-- error 1443
insert into v2Aa values ((select max(col1) from v1aA));
--- error 1423
+-- error 1443
insert into t1aA values ((select max(col1) from v1Aa));
--- error 1423
+-- error 1443
insert into v2aA values ((select max(col1) from v1aA));
--- error 1423
+-- error 1443
insert into v2Aa values ((select max(col1) from t1Aa));
-- error 1093
insert into t1aA values ((select max(col1) from t1Aa));
--- error 1423
+-- error 1443
insert into v2aA values ((select max(col1) from t1aA));
-- error 1093
insert into v2Aa values ((select max(col1) from v2aA));
--- error 1423
+-- error 1443
insert into t1Aa values ((select max(col1) from v2Aa));
-- error 1093
insert into v2aA values ((select max(col1) from v2Aa));
--- error 1423
+-- error 1443
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
--- error 1423
+-- error 1443
insert into v3aA (col1) values ((select max(col1) from t1aA));
--- error 1423
+-- error 1443
insert into v3Aa (col1) values ((select max(col1) from v2aA));
drop view v3aA,v2Aa,v1aA;
drop table t1Aa,t2Aa;
diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test
index 61170c7118a..97625632618 100644
--- a/mysql-test/t/view.test
+++ b/mysql-test/t/view.test
@@ -827,29 +827,29 @@ create table t2 (col1 int);
create view v1 as select * from t1;
create view v2 as select * from v1;
create view v3 as select v2.col1 from v2,t2 where v2.col1 = t2.col1;
--- error 1423
+-- error 1443
update v2 set col1 = (select max(col1) from v1);
--- error 1423
+-- error 1443
update v2 set col1 = (select max(col1) from t1);
-- error 1093
update v2 set col1 = (select max(col1) from v2);
--- error 1423
+-- error 1443
update v2,t2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
--- error 1423
+-- error 1443
update t1,t2 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
-- error 1093
update v1,t2 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,v2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,t1 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,v1 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
--- error 1423
+-- error 1443
update v2,t2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
-- error 1093
update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
--- error 1423
+-- error 1443
update v1,t2 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
-- error 1093
update t2,v2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
@@ -859,74 +859,74 @@ update t2,t1 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
update t2,v1 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
-- error 1093
update v2,t2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
--- error 1423
+-- error 1443
update t1,t2 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
--- error 1423
+-- error 1443
update v1,t2 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,v2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,t1 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
--- error 1423
+-- error 1443
update t2,v1 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
--- error 1423
+-- error 1443
update v3 set v3.col1 = (select max(col1) from v1);
--- error 1423
+-- error 1443
update v3 set v3.col1 = (select max(col1) from t1);
--- error 1423
+-- error 1443
update v3 set v3.col1 = (select max(col1) from v2);
-- error 1093
update v3 set v3.col1 = (select max(col1) from v3);
--- error 1423
+-- error 1443
delete from v2 where col1 = (select max(col1) from v1);
--- error 1423
+-- error 1443
delete from v2 where col1 = (select max(col1) from t1);
-- error 1093
delete from v2 where col1 = (select max(col1) from v2);
--- error 1423
+-- error 1443
delete v2 from v2,t2 where (select max(col1) from v1) > 0 and v2.col1 = t2.col1;
--- error 1423
+-- error 1443
delete t1 from t1,t2 where (select max(col1) from v1) > 0 and t1.col1 = t2.col1;
-- error 1093
delete v1 from v1,t2 where (select max(col1) from v1) > 0 and v1.col1 = t2.col1;
--- error 1423
+-- error 1443
delete v2 from v2,t2 where (select max(col1) from t1) > 0 and v2.col1 = t2.col1;
-- error 1093
delete t1 from t1,t2 where (select max(col1) from t1) > 0 and t1.col1 = t2.col1;
--- error 1423
+-- error 1443
delete v1 from v1,t2 where (select max(col1) from t1) > 0 and v1.col1 = t2.col1;
-- error 1093
delete v2 from v2,t2 where (select max(col1) from v2) > 0 and v2.col1 = t2.col1;
--- error 1423
+-- error 1443
delete t1 from t1,t2 where (select max(col1) from v2) > 0 and t1.col1 = t2.col1;
--- error 1423
+-- error 1443
delete v1 from v1,t2 where (select max(col1) from v2) > 0 and v1.col1 = t2.col1;
--- error 1423
+-- error 1443
insert into v2 values ((select max(col1) from v1));
--- error 1423
+-- error 1443
insert into t1 values ((select max(col1) from v1));
--- error 1423
+-- error 1443
insert into v2 values ((select max(col1) from v1));
--- error 1423
+-- error 1443
insert into v2 values ((select max(col1) from t1));
-- error 1093
insert into t1 values ((select max(col1) from t1));
--- error 1423
+-- error 1443
insert into v2 values ((select max(col1) from t1));
-- error 1093
insert into v2 values ((select max(col1) from v2));
--- error 1423
+-- error 1443
insert into t1 values ((select max(col1) from v2));
-- error 1093
insert into v2 values ((select max(col1) from v2));
--- error 1423
+-- error 1443
insert into v3 (col1) values ((select max(col1) from v1));
--- error 1423
+-- error 1443
insert into v3 (col1) values ((select max(col1) from t1));
--- error 1423
+-- error 1443
insert into v3 (col1) values ((select max(col1) from v2));
#check with TZ tables in list
--- error 1423
+-- error 1443
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from v2));
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from t2));
-- error 1048
@@ -1769,7 +1769,7 @@ create view v1 as select f59, f60 from t1 where f59 in
(select f59 from t1);
-- error 1288
update v1 set f60=2345;
--- error 1423
+-- error 1443
update t1 set f60=(select max(f60) from v1);
drop view v1;
drop table t1;
diff --git a/sql/item.cc b/sql/item.cc
index 1bbef46c0c9..995ade53620 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -4980,10 +4980,7 @@ int Item_default_value::save_in_field(Field *field_arg, bool no_conversions)
{
if (context->error_processor == &view_error_processor)
{
- TABLE_LIST *view= (cached_table->belong_to_view ?
- cached_table->belong_to_view :
- cached_table);
- // TODO: make correct error message
+ TABLE_LIST *view= cached_table->top_table();
push_warning_printf(field_arg->table->in_use,
MYSQL_ERROR::WARN_LEVEL_WARN,
ER_NO_DEFAULT_FOR_VIEW_FIELD,
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 1f9ecd6e0f1..88835ad935c 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1864,7 +1864,7 @@ err:
if (thd->net.last_errno == ER_NO_SUCH_TABLE &&
table_desc && table_desc->belong_to_view)
{
- TABLE_LIST * view= table_desc->belong_to_view;
+ TABLE_LIST *view= table_desc->belong_to_view;
thd->clear_error();
my_error(ER_VIEW_INVALID, MYF(0), view->view_db.str, view->view_name.str);
}
@@ -4624,9 +4624,7 @@ int setup_conds(THD *thd, TABLE_LIST *tables, TABLE_LIST *leaves,
/* process CHECK OPTION */
if (it_is_update)
{
- TABLE_LIST *view= table->belong_to_view;
- if (!view)
- view= table;
+ TABLE_LIST *view= table->top_table();
if (view->effective_with_check)
{
if (view->prepare_check_option(thd))
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 43a23dd31f0..9421cc4bb6b 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1195,9 +1195,7 @@ int check_that_all_fields_are_given_values(THD *thd, TABLE *entry,
bool view= FALSE;
if (table_list)
{
- table_list= (table_list->belong_to_view ?
- table_list->belong_to_view :
- table_list);
+ table_list= table_list->top_table();
view= test(table_list->view);
}
if (view)