From e5bd22ff066c390c10ea1f21d880cca90c1c0df0 Mon Sep 17 00:00:00 2001 From: "igor@igor-inspiron.creware.com" <> Date: Wed, 6 Jul 2005 09:00:17 -0700 Subject: [PATCH] view.result, view.test: Added a test case for bug #6120. sql_view.cc: Fixed bug #6120. The SP cache must be invalidated when a view is altered. --- mysql-test/r/view.result | 17 +++++++++++++++++ mysql-test/t/view.test | 17 +++++++++++++++++ sql/sql_view.cc | 4 ++++ 3 files changed, 38 insertions(+) diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index cebf88464cf..7bcfaf8bdc3 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1923,3 +1923,20 @@ ERROR HY000: Field of view 'test.v2' underlying table doesn't have a default val set sql_mode=default; drop view v2,v1; drop table t1; +CREATE TABLE t1 (s1 int, s2 int); +INSERT INTO t1 VALUES (1,2); +CREATE VIEW v1 AS SELECT s2 AS s1, s1 AS s2 FROM t1; +SELECT * FROM v1; +s1 s2 +2 1 +CREATE PROCEDURE p1 () SELECT * FROM v1; +CALL p1(); +s1 s2 +2 1 +ALTER VIEW v1 AS SELECT s1 AS s1, s2 AS s2 FROM t1; +CALL p1(); +s1 s2 +1 2 +DROP PROCEDURE p1; +DROP VIEW v1; +DROP TABLE t1; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index f3e32754821..6b6b3d8a00f 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1761,3 +1761,20 @@ INSERT INTO v2 (vcol1) VALUES(12); set sql_mode=default; drop view v2,v1; drop table t1; + +# +# Test for bug #6120: SP cache to be invalidated when altering a view +# + +CREATE TABLE t1 (s1 int, s2 int); +INSERT INTO t1 VALUES (1,2); +CREATE VIEW v1 AS SELECT s2 AS s1, s1 AS s2 FROM t1; +SELECT * FROM v1; +CREATE PROCEDURE p1 () SELECT * FROM v1; +CALL p1(); +ALTER VIEW v1 AS SELECT s1 AS s1, s2 AS s2 FROM t1; +CALL p1(); + +DROP PROCEDURE p1; +DROP VIEW v1; +DROP TABLE t1; diff --git a/sql/sql_view.cc b/sql/sql_view.cc index c8abee1e7dc..d74b96de2cd 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -20,6 +20,7 @@ #include "parse_file.h" #include "sp.h" #include "sp_head.h" +#include "sp_cache.h" #define MD5_BUFF_LENGTH 33 @@ -141,6 +142,9 @@ bool mysql_create_view(THD *thd, goto err; } + if (mode != VIEW_CREATE_NEW) + sp_cache_invalidate(); + #ifndef NO_EMBEDDED_ACCESS_CHECKS /* Privilege check for view creation: