Commit eb009402 authored by gkodinov/kgeorge@macbook.local's avatar gkodinov/kgeorge@macbook.local

merge of bug 28701 5.0-opt -> 5.1-opt

parents ed7e4b82 68e2efcc
...@@ -625,7 +625,7 @@ drop table t1; ...@@ -625,7 +625,7 @@ drop table t1;
create table t1 (a int, b int); create table t1 (a int, b int);
create view v1 as select a, sum(b) from t1 group by a; create view v1 as select a, sum(b) from t1 group by a;
select b from v1 use index (some_index) where b=1; select b from v1 use index (some_index) where b=1;
ERROR 42000: Key 'some_index' doesn't exist in table 'v1' ERROR 42000: Incorrect usage of USE INDEX and VIEW
drop view v1; drop view v1;
drop table t1; drop table t1;
create table t1 (col1 char(5),col2 char(5)); create table t1 (col1 char(5),col2 char(5));
...@@ -3559,6 +3559,17 @@ table_name is_updatable ...@@ -3559,6 +3559,17 @@ table_name is_updatable
v1 NO v1 NO
drop view v1; drop view v1;
drop table t1; drop table t1;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
CREATE VIEW v1 AS SELECT * FROM t1;
SELECT * FROM v1 USE KEY(non_existant);
ERROR HY000: Incorrect usage of USE INDEX and VIEW
SELECT * FROM v1 FORCE KEY(non_existant);
ERROR HY000: Incorrect usage of FORCE INDEX and VIEW
SELECT * FROM v1 IGNORE KEY(non_existant);
ERROR HY000: Incorrect usage of IGNORE INDEX and VIEW
DROP VIEW v1;
DROP TABLE t1;
End of 5.0 tests. End of 5.0 tests.
DROP DATABASE IF EXISTS `d-1`; DROP DATABASE IF EXISTS `d-1`;
CREATE DATABASE `d-1`; CREATE DATABASE `d-1`;
......
...@@ -510,7 +510,7 @@ drop table t1; ...@@ -510,7 +510,7 @@ drop table t1;
# #
create table t1 (a int, b int); create table t1 (a int, b int);
create view v1 as select a, sum(b) from t1 group by a; create view v1 as select a, sum(b) from t1 group by a;
-- error 1176 --error ER_WRONG_USAGE
select b from v1 use index (some_index) where b=1; select b from v1 use index (some_index) where b=1;
drop view v1; drop view v1;
drop table t1; drop table t1;
...@@ -3415,6 +3415,24 @@ select table_name, is_updatable from information_schema.views ...@@ -3415,6 +3415,24 @@ select table_name, is_updatable from information_schema.views
drop view v1; drop view v1;
drop table t1; drop table t1;
#
# Bug #28701: SELECTs from VIEWs completely ignore USE/FORCE KEY, allowing
# invalid statements
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
CREATE VIEW v1 AS SELECT * FROM t1;
--error ER_WRONG_USAGE
SELECT * FROM v1 USE KEY(non_existant);
--error ER_WRONG_USAGE
SELECT * FROM v1 FORCE KEY(non_existant);
--error ER_WRONG_USAGE
SELECT * FROM v1 IGNORE KEY(non_existant);
DROP VIEW v1;
DROP TABLE t1;
--echo End of 5.0 tests. --echo End of 5.0 tests.
# #
......
...@@ -953,6 +953,15 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, ...@@ -953,6 +953,15 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
DBUG_RETURN(0); DBUG_RETURN(0);
} }
if (table->use_index || table->ignore_index)
{
my_error(ER_WRONG_USAGE, MYF(0),
table->ignore_index ? "IGNORE INDEX" :
(table->force_index ? "FORCE INDEX" : "USE INDEX"),
"VIEW");
DBUG_RETURN(TRUE);
}
/* check loop via view definition */ /* check loop via view definition */
for (TABLE_LIST *precedent= table->referencing_view; for (TABLE_LIST *precedent= table->referencing_view;
precedent; precedent;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment