maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #04891
Re: [Commits] Rev 3577: MDEV-521 fix. in file:///home/bell/maria/bzr/work-maria-5.3-MDEV-521/
Hi Sanja,
Ok to push.
On Thu, Sep 20, 2012 at 12:49:03PM +0300, sanja@xxxxxxxxxxxxxxxx wrote:
> At file:///home/bell/maria/bzr/work-maria-5.3-MDEV-521/
>
> ------------------------------------------------------------
> revno: 3577
> revision-id: sanja@xxxxxxxxxxxxxxxx-20120920094859-lcrxe8lr1mtg8h10
> parent: timour@xxxxxxxxxxxx-20120917081346-nqd08d0v27w8zp5c
> committer: sanja@xxxxxxxxxxxxxxxx
> 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@xxxxxxxxxxx
> 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