Loading configure.in +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ AC_PROG_INSTALL test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' # Not critical since the generated file is distributed AC_PROG_YACC AC_CHECK_PROGS(YACC, ['bison -y -p MYSQL']) AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) AC_CHECK_PROG(DVIS, tex, manual.dvi) Loading mysql-test/r/view.result +14 −0 Original line number Diff line number Diff line Loading @@ -2539,3 +2539,17 @@ drop view v1; // View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache `test`.`t1`.`id` AS `id` from `t1` create table t1(f1 int, f2 int); create view v1 as select ta.f1 as a, tb.f1 as b from t1 ta, t1 tb where ta.f1=tb .f1 and ta.f2=tb.f2; insert into t1 values(1,1),(2,2); create view v2 as select * from v1 where a > 1 with check option; select * from v2; a b 2 2 update v2 set b=3 where a=2; select * from v2; a b 3 3 drop view v2, v1; drop table t1; mysql-test/t/view.test +14 −0 Original line number Diff line number Diff line Loading @@ -2390,3 +2390,17 @@ show create view v1; drop view v1; // delimiter ;// # # Bug#17726 Not checked empty list caused endless loop # create table t1(f1 int, f2 int); create view v1 as select ta.f1 as a, tb.f1 as b from t1 ta, t1 tb where ta.f1=tb .f1 and ta.f2=tb.f2; insert into t1 values(1,1),(2,2); create view v2 as select * from v1 where a > 1 with check option; select * from v2; update v2 set b=3 where a=2; select * from v2; drop view v2, v1; drop table t1; sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2547,7 +2547,8 @@ Item_cond::fix_fields(THD *thd, Item **ref) { table_map tmp_table_map; while (item->type() == Item::COND_ITEM && ((Item_cond*) item)->functype() == functype()) ((Item_cond*) item)->functype() == functype() && !((Item_cond*) item)->list.is_empty()) { // Identical function li.replace(((Item_cond*) item)->list); ((Item_cond*) item)->list.empty(); Loading sql/sql_analyse.cc +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #pragma implementation // gcc: Class implementation #endif #define MYSQL_LEX 1 #include "mysql_priv.h" #include "procedure.h" #include "sql_analyse.h" Loading Loading
configure.in +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ AC_PROG_INSTALL test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' # Not critical since the generated file is distributed AC_PROG_YACC AC_CHECK_PROGS(YACC, ['bison -y -p MYSQL']) AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) AC_CHECK_PROG(DVIS, tex, manual.dvi) Loading
mysql-test/r/view.result +14 −0 Original line number Diff line number Diff line Loading @@ -2539,3 +2539,17 @@ drop view v1; // View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache `test`.`t1`.`id` AS `id` from `t1` create table t1(f1 int, f2 int); create view v1 as select ta.f1 as a, tb.f1 as b from t1 ta, t1 tb where ta.f1=tb .f1 and ta.f2=tb.f2; insert into t1 values(1,1),(2,2); create view v2 as select * from v1 where a > 1 with check option; select * from v2; a b 2 2 update v2 set b=3 where a=2; select * from v2; a b 3 3 drop view v2, v1; drop table t1;
mysql-test/t/view.test +14 −0 Original line number Diff line number Diff line Loading @@ -2390,3 +2390,17 @@ show create view v1; drop view v1; // delimiter ;// # # Bug#17726 Not checked empty list caused endless loop # create table t1(f1 int, f2 int); create view v1 as select ta.f1 as a, tb.f1 as b from t1 ta, t1 tb where ta.f1=tb .f1 and ta.f2=tb.f2; insert into t1 values(1,1),(2,2); create view v2 as select * from v1 where a > 1 with check option; select * from v2; update v2 set b=3 where a=2; select * from v2; drop view v2, v1; drop table t1;
sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2547,7 +2547,8 @@ Item_cond::fix_fields(THD *thd, Item **ref) { table_map tmp_table_map; while (item->type() == Item::COND_ITEM && ((Item_cond*) item)->functype() == functype()) ((Item_cond*) item)->functype() == functype() && !((Item_cond*) item)->list.is_empty()) { // Identical function li.replace(((Item_cond*) item)->list); ((Item_cond*) item)->list.empty(); Loading
sql/sql_analyse.cc +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #pragma implementation // gcc: Class implementation #endif #define MYSQL_LEX 1 #include "mysql_priv.h" #include "procedure.h" #include "sql_analyse.h" Loading