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

Sergei Petrunia psergey at askmonty.org
Thu Sep 20 14:25:35 EEST 2012


Hi Sanja,

Ok to push.

On Thu, Sep 20, 2012 at 12:49:03PM +0300, sanja at montyprogram.com wrote:
> 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.

> === 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);
>  }
> 

> _______________________________________________
> commits mailing list
> commits at mariadb.org
> https://lists.askmonty.org/cgi-bin/mailman/listinfo/commits

-- 
BR
 Sergei
-- 
Sergei Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog


More information about the commits mailing list