mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#45806 crash when replacing into a view with a join!
The crash happend because for views which are joins we have table_list->table == 0 and table_list->table->'any method' call leads to crash. The fix is to perform table_list->table->file->extra() method for all tables belonging to view.
This commit is contained in:
@ -3723,6 +3723,117 @@ DROP TABLE t1;
|
||||
|
||||
# -- End of test case for Bug#40825
|
||||
|
||||
#
|
||||
# Bug #45806 crash when replacing into a view with a join!
|
||||
#
|
||||
CREATE TABLE t1(a INT UNIQUE);
|
||||
CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DELETE FROM t1 WHERE a=3;
|
||||
INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
|
||||
REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
|
||||
ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
|
||||
SELECT * FROM v2;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DROP VIEW v1;
|
||||
DROP VIEW v2;
|
||||
DROP TABLE t1;
|
||||
# -- End of test case for Bug#45806
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.0 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user