diff options
author | unknown <igor@olga.mysql.com> | 2007-02-11 22:48:40 -0800 |
---|---|---|
committer | unknown <igor@olga.mysql.com> | 2007-02-11 22:48:40 -0800 |
commit | 1932ac9aae05e16de322530f5215cd9b6c3f9fb3 (patch) | |
tree | 8b5706fe1f77742456b020f18aa24b5d604afe96 | |
parent | 3e4f834dfbe4b7be9a53f8207bab7b9e59496ba1 (diff) | |
parent | 5e42c0de8d0793d3e714e8368dccd3b69e385fab (diff) | |
download | mariadb-git-1932ac9aae05e16de322530f5215cd9b6c3f9fb3.tar.gz |
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26159
-rw-r--r-- | mysql-test/r/information_schema.result | 3 | ||||
-rw-r--r-- | mysql-test/r/view.result | 39 | ||||
-rw-r--r-- | mysql-test/t/view.test | 14 | ||||
-rw-r--r-- | sql/sql_lex.cc | 1 | ||||
-rw-r--r-- | sql/sql_view.cc | 1 |
5 files changed, 55 insertions, 3 deletions
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index b93a4c28849..3986dce2c29 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1262,8 +1262,7 @@ from information_schema.tables order by object_schema; explain select * from v1; id select_type table type possible_keys key key_len ref rows Extra -1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found -2 DERIVED tables ALL NULL NULL NULL NULL 2 Using filesort +1 SIMPLE tables ALL NULL NULL NULL NULL 2 Using filesort explain select * from (select table_name from information_schema.tables) as a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index a52882fef2f..462916ec09b 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -3078,4 +3078,43 @@ b 2 DROP VIEW v1; DROP TABLE t1,t2; +create table t1(f1 int, f2 int); +insert into t1 values(1,2),(1,3),(1,1),(2,3),(2,1),(2,2); +select * from t1; +f1 f2 +1 2 +1 3 +1 1 +2 3 +2 1 +2 2 +create view v1 as select * from t1 order by f2; +select * from v1; +f1 f2 +1 1 +2 1 +1 2 +2 2 +1 3 +2 3 +explain extended select * from v1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort +Warnings: +Note 1003 select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f2` AS `f2` from `test`.`t1` order by `test`.`t1`.`f2` +select * from v1 order by f1; +f1 f2 +1 1 +1 2 +1 3 +2 1 +2 2 +2 3 +explain extended select * from v1 order by f1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort +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; End of 5.0 tests. diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 0fa5765bb64..7fdca1ff7e0 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -3024,4 +3024,18 @@ SELECT * FROM t2; DROP VIEW v1; DROP TABLE t1,t2; +# +# Bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm. +# +create table t1(f1 int, f2 int); +insert into t1 values(1,2),(1,3),(1,1),(2,3),(2,1),(2,2); +select * from t1; +create view v1 as select * from t1 order by f2; +select * from v1; +explain extended select * from v1; +select * from v1 order by f1; +explain extended select * from v1 order by f1; +drop view v1; +drop table t1; + --echo End of 5.0 tests. diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index a362e6c7fd2..ce76c35b33c 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1751,7 +1751,6 @@ bool st_lex::can_be_merged() } return (selects_allow_merge && - select_lex.order_list.elements == 0 && select_lex.group_list.elements == 0 && select_lex.having == 0 && select_lex.with_sum_func == 0 && diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 18ef3eaf29c..fd2d6c89785 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -1263,6 +1263,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, but it will not be included to SELECT_LEX tree, because it will not be executed */ + table->select_lex->order_list.push_back(&lex->select_lex.order_list); goto ok; } |