Below is the list of changes that have just been committed into a local
5.0 repository of igor. When igor does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-05-23 19:04:12-07:00, igor@stripped +3 -0
Fixed bug #28561: assertion abort for update on multi-table view with
CHECK OPTION and a subquery in WHERE condition.
The abort was triggered by setting the value of join->tables for
subqueries in the function JOIN::cleanup. This function was called
after an invocation of the JOIN::join_free method for subqueries
used in WHERE condition.
mysql-test/r/view.result@stripped, 2007-05-23 19:04:09-07:00, igor@stripped +10 -0
Added a test case for bug #28561.
mysql-test/t/view.test@stripped, 2007-05-23 19:04:09-07:00, igor@stripped +19 -0
Added a test case for bug #28561.
sql/sql_select.cc@stripped, 2007-05-23 19:04:10-07:00, igor@stripped +0 -1
Fixed bug #28561: assertion abort for update on multi-table view with
CHECK OPTION and a subquery in WHERE condition.
The abort was triggered by setting the value of join->tables for
subqueries in the function JOIN::cleanup. This function was called
after an invocation of the JOIN::join_free method for subqueries
used in WHERE condition.
Setting the value of join->tables to for a subquery created serious
problems for checking WHERE condition after update of the multi-table
view as this check is performed in the do_select function right
after a call of the JOIN::join_free method.
In fact setting join->tables to 0 in JOIN::cleanup is not needed
anywhere in the current code.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: igor
# Host: olga.mysql.com
# Root: /home/igor/dev-opt/mysql-5.0-opt-bug28561
--- 1.523/sql/sql_select.cc 2007-05-23 19:04:19 -07:00
+++ 1.524/sql/sql_select.cc 2007-05-23 19:04:19 -07:00
@@ -6375,7 +6375,6 @@
for (tab= join_tab, end= tab+tables; tab != end; tab++)
tab->cleanup();
table= 0;
- tables= 0;
}
else
{
--- 1.200/mysql-test/r/view.result 2007-05-23 19:04:19 -07:00
+++ 1.201/mysql-test/r/view.result 2007-05-23 19:04:19 -07:00
@@ -3367,4 +3367,14 @@
View Create View
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(1.23456789 as decimal(8,0)) AS `col`
DROP VIEW v1;
+CREATE TABLE t1 (id int);
+CREATE TABLE t2 (id int, c int DEFAULT 0);
+INSERT INTO t1 (id) VALUES (1);
+INSERT INTO t2 (id) VALUES (1);
+CREATE VIEW v1 AS
+SELECT t2.c FROM t1, t2
+WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION;
+UPDATE v1 SET c=1;
+DROP VIEW v1;
+DROP TABLE t1,t2;
End of 5.0 tests.
--- 1.183/mysql-test/t/view.test 2007-05-23 19:04:19 -07:00
+++ 1.184/mysql-test/t/view.test 2007-05-23 19:04:19 -07:00
@@ -3233,4 +3233,23 @@
SHOW CREATE VIEW v1;
DROP VIEW v1;
+#
+# Bug #28561: update on multi-table view with CHECK OPTION and
+# a subquery in WHERE condition
+#
+
+CREATE TABLE t1 (id int);
+CREATE TABLE t2 (id int, c int DEFAULT 0);
+INSERT INTO t1 (id) VALUES (1);
+INSERT INTO t2 (id) VALUES (1);
+
+CREATE VIEW v1 AS
+ SELECT t2.c FROM t1, t2
+ WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION;
+
+UPDATE v1 SET c=1;
+
+DROP VIEW v1;
+DROP TABLE t1,t2;
+
--echo End of 5.0 tests.
| Thread |
|---|
| • bk commit into 5.0 tree (igor:1.2500) BUG#28561 | igor | 24 May |