diff options
author | Igor Babaev <igor@askmonty.org> | 2011-07-17 23:12:31 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2011-07-17 23:12:31 -0700 |
commit | a7287d9ae1a457ab39c9b14637d588b0438039d7 (patch) | |
tree | fa65a6109275c18a42004295405e181cab25ca97 /mysql-test/t/derived_view.test | |
parent | cc0195d6a1e603c3ebef91af16a1e1c33dff4a2e (diff) | |
download | mariadb-git-a7287d9ae1a457ab39c9b14637d588b0438039d7.tar.gz |
Fixed LP bug #793448.
This bug could lead to wrong result sets for a query over a
materialized derived table or view accessed by a multi-component
key.
It happened because the function get_next_field_for_derived_key
was supposed to update its argument, and it did not do it.
Diffstat (limited to 'mysql-test/t/derived_view.test')
-rw-r--r-- | mysql-test/t/derived_view.test | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/mysql-test/t/derived_view.test b/mysql-test/t/derived_view.test index 8e53a7056c3..fd51b9b3de2 100644 --- a/mysql-test/t/derived_view.test +++ b/mysql-test/t/derived_view.test @@ -616,7 +616,7 @@ DROP VIEW v1; DROP TABLE t1,t2,t3; --echo # ---echo # LP bug #809179 +--echo # LP bug #809179: right join over a derived table / view --echo # CREATE TABLE t1 (a int, b int); @@ -668,3 +668,32 @@ INSERT INTO v3(a) VALUES (1); DROP VIEW v1,v2,v3; DROP TABLE t1,t2,t3; + +--echo # +--echo # LP bug #793448: materialized view accessed by two-component key +--echo # + +CREATE TABLE t1 (a int, b int); +INSERT INTO t1 VALUES (9,3), (2,5); + +CREATE TABLE t2 (a int, b int); +INSERT INTO t2 VALUES (9,3), (3,7), (9,1), (2,5), (2,4), (3,8); + +CREATE TABLE t3 (a int, b int); +INSERT INTO t3 VALUES (10,3), (9,7), (9,1), (2,4); + +CREATE VIEW v1(a,b) AS SELECT a, MAX(b) FROM t2 GROUP BY a; +CREATE VIEW v2(a,b) AS SELECT a,b FROM t2 UNION SELECT a,b FROM t3; + +SELECT * FROM v1; +SELECT a FROM t1 WHERE (a,b) IN (SELECT * FROM v1); +EXPLAIN +SELECT a FROM t1 WHERE (a,b) IN (SELECT * FROM v1); + +SELECT * FROM v2; +SELECT a FROM t1 WHERE (a,b) IN (SELECT * FROM v2); +EXPLAIN +SELECT a FROM t1 WHERE (a,b) IN (SELECT * FROM v2); + +DROP VIEW v1,v2; +DROP TABLE t1,t2,t3; |