diff options
author | igor@olga.mysql.com <> | 2007-02-11 19:36:46 -0800 |
---|---|---|
committer | igor@olga.mysql.com <> | 2007-02-11 19:36:46 -0800 |
commit | 4b1a1d9eb7ac099fa3cc995e627b02203135a2f2 (patch) | |
tree | 111657b6128e2d3abd42ff117bb4b7d460588ec3 /mysql-test | |
parent | ffdf7b159b8840f249b04cd998b3bf51e2a6f089 (diff) | |
download | mariadb-git-4b1a1d9eb7ac099fa3cc995e627b02203135a2f2.tar.gz |
Fixed bug #26209.
The function make_unireg_sortorder ignored the fact that any
view field is represented by a 'ref' object.
This could lead to wrong results for the queries containing
both GROUP BY and ORDER BY clauses.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/view.result | 18 | ||||
-rw-r--r-- | mysql-test/t/view.test | 20 |
2 files changed, 38 insertions, 0 deletions
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 462916ec09b..50b41e1352f 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -3117,4 +3117,22 @@ Warnings: Note 1003 select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f2` AS `f2` from `test`.`t1` order by `test`.`t1`.`f1`,`test`.`t1`.`f2` drop view v1; drop table t1; +CREATE TABLE t1 ( +id int(11) NOT NULL PRIMARY KEY, +country varchar(32), +code int(11) default NULL +); +INSERT INTO t1 VALUES +(1,'ITALY',100),(2,'ITALY',200),(3,'FRANCE',100), (4,'ITALY',100); +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT code, COUNT(DISTINCT country) FROM t1 GROUP BY code ORDER BY MAX(id); +code COUNT(DISTINCT country) +200 1 +100 2 +SELECT code, COUNT(DISTINCT country) FROM v1 GROUP BY code ORDER BY MAX(id); +code COUNT(DISTINCT country) +200 1 +100 2 +DROP VIEW v1; +DROP TABLE t1; End of 5.0 tests. diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 7fdca1ff7e0..33e381af476 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -3038,4 +3038,24 @@ explain extended select * from v1 order by f1; drop view v1; drop table t1; +# +# Bug#26209: queries with GROUP BY and ORDER BY using views +# + +CREATE TABLE t1 ( + id int(11) NOT NULL PRIMARY KEY, + country varchar(32), + code int(11) default NULL +); +INSERT INTO t1 VALUES + (1,'ITALY',100),(2,'ITALY',200),(3,'FRANCE',100), (4,'ITALY',100); + +CREATE VIEW v1 AS SELECT * FROM t1; + +SELECT code, COUNT(DISTINCT country) FROM t1 GROUP BY code ORDER BY MAX(id); +SELECT code, COUNT(DISTINCT country) FROM v1 GROUP BY code ORDER BY MAX(id); + +DROP VIEW v1; +DROP TABLE t1; + --echo End of 5.0 tests. |