1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Bug #47788: Crash in TABLE_LIST::hide_view_error on

UPDATE + VIEW + SP + MERGE + ALTER

When cleaning up the stored procedure's internal 
structures the flag to ignore the errors for 
INSERT/UPDATE IGNORE was not cleaned up.
As a result error ignoring was on during name 
resolution. And this is an abnormal situation : the
SELECT_LEX flag can be on only during query execution.

Fixed by correctly cleaning up the SELECT_LEX flag 
when reusing the SELECT_LEX in a second execution.
This commit is contained in:
Georgi Kodinov
2009-10-19 16:55:04 +03:00
parent 8363e26659
commit 74b0f6be2f
3 changed files with 43 additions and 0 deletions

View File

@ -2448,3 +2448,27 @@ SELECT AVG (a) FROM t1 WHERE b = 999999;
--error ER_SP_DOES_NOT_EXIST
SELECT non_existent (a) FROM t1 WHERE b = 999999;
DROP TABLE t1;
--echo #
--echo # Bug #47788: Crash in TABLE_LIST::hide_view_error on UPDATE + VIEW +
--echo # SP + MERGE + ALTER
--echo #
CREATE TABLE t1 (pk INT, b INT, KEY (b));
CREATE ALGORITHM = TEMPTABLE VIEW v1 AS SELECT * FROM t1;
CREATE PROCEDURE p1 (a int) UPDATE IGNORE v1 SET b = a;
--error ER_NON_UPDATABLE_TABLE
CALL p1(5);
ALTER TABLE t1 CHANGE COLUMN b b2 INT;
--error ER_VIEW_INVALID
CALL p1(7);
DROP PROCEDURE p1;
DROP VIEW v1;
DROP TABLE t1;
--echo End of 5.1 tests