[Commits] Rev 3577: MDEV-521 fix. in file:///home/bell/maria/bzr/work-maria-5.3-MDEV-521/

sanja at montyprogram.com sanja at montyprogram.com
Thu Sep 20 12:49:03 EEST 2012


At file:///home/bell/maria/bzr/work-maria-5.3-MDEV-521/

------------------------------------------------------------
revno: 3577
revision-id: sanja at montyprogram.com-20120920094859-lcrxe8lr1mtg8h10
parent: timour at askmonty.org-20120917081346-nqd08d0v27w8zp5c
committer: sanja at montyprogram.com
branch nick: work-maria-5.3-MDEV-521
timestamp: Thu 2012-09-20 12:48:59 +0300
message:
  MDEV-521 fix.
  
  After pullout item during single row subselect transformation it should be fixed properly.
-------------- next part --------------
=== modified file 'mysql-test/r/subselect.result'
--- a/mysql-test/r/subselect.result	2012-08-25 06:15:57 +0000
+++ b/mysql-test/r/subselect.result	2012-09-20 09:48:59 +0000
@@ -6163,5 +6163,20 @@ a	( 3, 3 ) NOT IN ( SELECT NULL, NULL )
 3	NULL
 set optimizer_switch=@mdev367_optimizer_switch;
 DROP TABLE t1;
+#
+# MDEV-521 single value subselect transformation problem
+#
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+DROP TABLE t1;
 # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;

=== modified file 'mysql-test/r/subselect_no_mat.result'
--- a/mysql-test/r/subselect_no_mat.result	2012-08-25 06:15:57 +0000
+++ b/mysql-test/r/subselect_no_mat.result	2012-09-20 09:48:59 +0000
@@ -6162,6 +6162,21 @@ a	( 3, 3 ) NOT IN ( SELECT NULL, NULL )
 3	NULL
 set optimizer_switch=@mdev367_optimizer_switch;
 DROP TABLE t1;
+#
+# MDEV-521 single value subselect transformation problem
+#
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+DROP TABLE t1;
 # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;
 set optimizer_switch=default;

=== modified file 'mysql-test/r/subselect_no_opts.result'
--- a/mysql-test/r/subselect_no_opts.result	2012-08-25 06:15:57 +0000
+++ b/mysql-test/r/subselect_no_opts.result	2012-09-20 09:48:59 +0000
@@ -6158,6 +6158,21 @@ a	( 3, 3 ) NOT IN ( SELECT NULL, NULL )
 3	NULL
 set optimizer_switch=@mdev367_optimizer_switch;
 DROP TABLE t1;
+#
+# MDEV-521 single value subselect transformation problem
+#
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+DROP TABLE t1;
 # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;
 set @optimizer_switch_for_subselect_test=null;

=== modified file 'mysql-test/r/subselect_no_scache.result'
--- a/mysql-test/r/subselect_no_scache.result	2012-08-25 06:15:57 +0000
+++ b/mysql-test/r/subselect_no_scache.result	2012-09-20 09:48:59 +0000
@@ -6169,6 +6169,21 @@ a	( 3, 3 ) NOT IN ( SELECT NULL, NULL )
 3	NULL
 set optimizer_switch=@mdev367_optimizer_switch;
 DROP TABLE t1;
+#
+# MDEV-521 single value subselect transformation problem
+#
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+DROP TABLE t1;
 # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;
 set optimizer_switch=default;

=== modified file 'mysql-test/r/subselect_no_semijoin.result'
--- a/mysql-test/r/subselect_no_semijoin.result	2012-08-25 06:15:57 +0000
+++ b/mysql-test/r/subselect_no_semijoin.result	2012-09-20 09:48:59 +0000
@@ -6158,6 +6158,21 @@ a	( 3, 3 ) NOT IN ( SELECT NULL, NULL )
 3	NULL
 set optimizer_switch=@mdev367_optimizer_switch;
 DROP TABLE t1;
+#
+# MDEV-521 single value subselect transformation problem
+#
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+f1
+u1
+u2
+DROP TABLE t1;
 # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;
 set @optimizer_switch_for_subselect_test=null;

=== modified file 'mysql-test/t/subselect.test'
--- a/mysql-test/t/subselect.test	2012-08-25 06:15:57 +0000
+++ b/mysql-test/t/subselect.test	2012-09-20 09:48:59 +0000
@@ -5229,5 +5229,18 @@ set optimizer_switch=@mdev367_optimizer_
 
 DROP TABLE t1;
 
+--echo #
+--echo # MDEV-521 single value subselect transformation problem
+--echo #
+CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('u1'),('u2');
+
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+FLUSH TABLES;
+SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
+
+# Cleanup
+DROP TABLE t1;
+
 --echo # return optimizer switch changed in the beginning of this test
 set optimizer_switch=@subselect_tmp;

=== modified file 'sql/item_subselect.cc'
--- a/sql/item_subselect.cc	2012-09-17 08:13:46 +0000
+++ b/sql/item_subselect.cc	2012-09-20 09:48:59 +0000
@@ -1007,11 +1007,9 @@ Item_singlerow_subselect::select_transfo
     }
     substitution= select_lex->item_list.head();
     /*
-      as far as we moved content to upper level, field which depend of
-      'upper' select is not really dependent => we remove this dependence
+      as far as we moved content to upper level we have to fix dependences & Co
     */
-    substitution->walk(&Item::remove_dependence_processor, 0,
-		       (uchar *) select_lex->outer_select());
+    substitution->fix_after_pullout(select_lex->outer_select(), &substitution);
   }
   DBUG_RETURN(false);
 }



More information about the commits mailing list