diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2016-02-09 02:31:47 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2016-02-09 02:31:47 +0300 |
commit | b17a4350696c646e4bc6154a27eeddf363cd39c7 (patch) | |
tree | 195f108e4112e2f279546f23ccd7e4e2b197b60b /mysql-test/r/subselect_sj.result | |
parent | d443d70d06e39b0054b1c9beb00dceac2618c167 (diff) | |
download | mariadb-git-b17a4350696c646e4bc6154a27eeddf363cd39c7.tar.gz |
MDEV-6859: scalar subqueries in a comparison produced unexpected result
When one evaluates row-based comparison like (X, Y) = (A,B), one should
first call bring_value() for the Item that returns row value. If you
don't do that and just attempt to read values of X and Y, you get stale
values.
Semi-join/Materialization can take a row-based comparison apart and
make ref access from it. In that case, we need to call bring_value()
to get the index lookup components.
Diffstat (limited to 'mysql-test/r/subselect_sj.result')
-rw-r--r-- | mysql-test/r/subselect_sj.result | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/mysql-test/r/subselect_sj.result b/mysql-test/r/subselect_sj.result index cef13df63a8..1662d4eb14a 100644 --- a/mysql-test/r/subselect_sj.result +++ b/mysql-test/r/subselect_sj.result @@ -3021,4 +3021,43 @@ f1 f2 f3 1 0 2 drop table t1,t2,t3,t4; set optimizer_switch= @tmp_mdev7823; +# +# MDEV-6859: scalar subqueries in a comparison produced unexpected result +# +set @tmp_mdev6859=@@optimizer_switch; +set optimizer_switch=default; +CREATE TABLE t1 ( +project_number varchar(50) NOT NULL, +PRIMARY KEY (project_number) +) ENGINE=MyISAM; +INSERT INTO t1 (project_number) VALUES ('aaa'),('bbb'); +CREATE TABLE t2 ( +id int(10) unsigned NOT NULL AUTO_INCREMENT, +project_number varchar(50) NOT NULL, +history_date date NOT NULL, +country varchar(50) NOT NULL, +PRIMARY KEY (id) +) ENGINE=MyISAM; +INSERT INTO t2 (id, project_number, history_date, country) VALUES +(1, 'aaa', '2014-08-09', 'france'),(2, 'aaa', '2014-09-09', 'singapore'); +CREATE TABLE t3 ( +region varchar(50) NOT NULL, +country varchar(50) NOT NULL +) ENGINE=MyISAM; +INSERT INTO t3 (region, country) VALUES ('apac', 'singapore'),('eame', 'france'); +SELECT SQL_NO_CACHE a.project_number +FROM t1 a +WHERE ( SELECT z.country +FROM t2 z +WHERE z.project_number = a.project_number AND z.history_date <= '2014-09-01' +ORDER BY z.id DESC LIMIT 1 +) IN ( +SELECT r.country +FROM t3 r +WHERE r.region = 'eame' + ); +project_number +aaa +drop table t1, t2, t3; +set optimizer_switch= @tmp_mdev6859; set optimizer_switch=@subselect_sj_tmp; |