| Bug #10970 | Views: dependence on temporary table allowed | ||
|---|---|---|---|
| Submitted: | 30 May 2005 19:39 | Modified: | 24 Aug 2005 18:02 |
| Reporter: | Peter Gulutzan | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0.7-beta-debug | OS: | Linux (SUSE 9.2) |
| Assigned to: | Igor Babaev | CPU Architecture: | Any |
[30 May 2005 19:39]
Peter Gulutzan
[30 May 2005 20:00]
MySQL Verification Team
Thank you for the bug report.
[18 Aug 2005 5:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/28434
[20 Aug 2005 4:55]
Igor Babaev
ChangeSet
1.1988 05/08/17 22:19:12 igor@rurik.mysql.com +4 -0
view.test:
Added a test case for bug #10970.
view.result:
Added a test case for bug #10970.
Modified the error messages for error ER_VIEW_SELECT_TMPTABLE.
sql_view.cc:
Fixed bug #10970.
In the function mysql_create_view if a view does not refer to
any tables directly the variable table must be updated
after the call of open_and_lock_tables.
errmsg.txt:
Modified the error messages for error ER_VIEW_SELECT_TMPTABLE
(when fixing bug #10970).
The fix will appear in 5.0.12.
[24 Aug 2005 18:02]
Mike Hillyer
Documented in 5.0.12 changelog: <listitem><para>A view was allowed to depend on a function that referred to a temporary table. (Bug #10970)</para></listitem>
[24 Nov 2005 18:54]
Konstantin Osipov
The bug has not been fully fixed: I can recreate the table as temporary, and the view will still work. mysql> create temporary table t18 (s1 int); Query OK, 0 rows affected (0.00 sec) mysql> delimiter // mysql> create function f18 () returns int return (select count(*) from t18)// Query OK, 0 rows affected (0.03 sec) mysql> create view v18 as select f18()// ERROR 1352 (HY000): View's SELECT refers to a temporary table 't18' mysql> drop table t18// Query OK, 0 rows affected (0.00 sec) mysql> create table t18 (s1 int)// Query OK, 0 rows affected (0.13 sec) mysql> create view v18 as select f18()// Query OK, 0 rows affected (0.00 sec) mysql> select * from v18// +-------+ | f18() | +-------+ | 0 | +-------+ 1 row in set (0.01 sec) mysqlql> drop table t18// Query OK, 0 rows affected (0.00 sec) mysql> create temporary table t18 (s1 int)// Query OK, 0 rows affected (0.00 sec) mysql> select * from v18// +-------+ | f18() | +-------+ | 0 | +-------+ 1 row in set (0.00 sec)
