MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:igor Date:May 24 2007 2:04am
Subject:bk commit into 5.0 tree (igor:1.2500) BUG#28561
View as plain text  
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#28561igor24 May