-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-25243 ASAN heap-use-after-free in Item_func_sp::execute_impl upo…
…n concurrent view DDL and I_S query with view and function
- Loading branch information
Showing
8 changed files
with
358 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# | ||
# Start of 10.2 tests | ||
# | ||
# | ||
# MDEV-25243 ASAN heap-use-after-free in Item_func_sp::execute_impl upon concurrent view DDL and I_S query with view and function | ||
# | ||
CREATE FUNCTION f1() RETURNS INT RETURN 1; | ||
CREATE VIEW v01 AS SELECT f1(); | ||
CREATE VIEW v02 AS SELECT f1(); | ||
connect con1,localhost,root,,; | ||
SELECT GET_LOCK('v01',30); | ||
GET_LOCK('v01',30) | ||
1 | ||
SELECT GET_LOCK('v02',30); | ||
GET_LOCK('v02',30) | ||
1 | ||
connection default; | ||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS | ||
WHERE TABLE_SCHEMA='test' | ||
AND TABLE_NAME LIKE 'v0%' | ||
AND GET_LOCK(TABLE_NAME,30) | ||
AND RELEASE_LOCK(TABLE_NAME) | ||
AND f1()=1 | ||
ORDER BY TABLE_NAME; | ||
connection con1; | ||
connection con1; | ||
SELECT RELEASE_LOCK('v01') /* Let the first row evaluate f1 */; | ||
RELEASE_LOCK('v01') | ||
1 | ||
CREATE FUNCTION f2() RETURNS INT RETURN 1 /* Invalidate SP cache*/; | ||
SELECT RELEASE_LOCK('v02') /* Let the second row evaluate f1() */; | ||
RELEASE_LOCK('v02') | ||
1 | ||
DROP FUNCTION f2; | ||
disconnect con1; | ||
connection default; | ||
SELECT RELEASE_LOCK('v01'); | ||
RELEASE_LOCK('v01') | ||
NULL | ||
SELECT RELEASE_LOCK('v02'); | ||
RELEASE_LOCK('v02') | ||
NULL | ||
DROP VIEW v01, v02; | ||
DROP FUNCTION f1; | ||
# | ||
# End of 10.2 tests | ||
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# | ||
# Start of 10.2 tests | ||
# | ||
# | ||
# MDEV-25243 ASAN heap-use-after-free in Item_func_sp::execute_impl upon concurrent view DDL and I_S query with view and function | ||
# | ||
# The originally reported non-deterministic test. | ||
# It did not fail reliably on every run. | ||
CREATE TABLE t (a INT); | ||
INSERT INTO t VALUES (1),(2); | ||
CREATE FUNCTION f(b INT) RETURNS INT RETURN 1; | ||
CREATE VIEW v AS SELECT f(SUM(a)) FROM t; | ||
connect con1,localhost,root,,test; | ||
LOOP | ||
CREATE OR REPLACE VIEW vv AS SELECT 1; | ||
END LOOP $ | ||
connection default; | ||
SELECT v.* FROM v JOIN INFORMATION_SCHEMA.TABLES WHERE DATA_LENGTH = -1; | ||
f(SUM(a)) | ||
KILL CONID; | ||
disconnect con1; | ||
connection default; | ||
DROP VIEW IF EXISTS vv; | ||
DROP VIEW v; | ||
DROP FUNCTION f; | ||
DROP TABLE t; | ||
# The second test version from the MDEV. | ||
# It failed more reliably, but still was not deterministic. | ||
CREATE FUNCTION f() RETURNS INT RETURN 1; | ||
CREATE VIEW v AS SELECT f() FROM seq_1_to_10; | ||
SELECT * FROM INFORMATION_SCHEMA.TABLES, v;; | ||
connect con1,localhost,root,,; | ||
CREATE VIEW v2 AS SELECT 1; | ||
connection default; | ||
disconnect con1; | ||
DROP VIEW v; | ||
DROP VIEW v2; | ||
DROP FUNCTION f; | ||
# The third test version from the MDEV. | ||
# It failed reliably, and should be deterninistic. | ||
CREATE FUNCTION f1() RETURNS INT RETURN 1; | ||
CREATE VIEW v01 AS SELECT f1(); | ||
CREATE VIEW v02 AS SELECT f1(); | ||
connect con1,localhost,root,,; | ||
SELECT GET_LOCK('v01',30); | ||
GET_LOCK('v01',30) | ||
1 | ||
SELECT GET_LOCK('v02',30); | ||
GET_LOCK('v02',30) | ||
1 | ||
connection default; | ||
SELECT * FROM INFORMATION_SCHEMA.TABLES | ||
WHERE TABLE_SCHEMA='test' | ||
AND TABLE_NAME LIKE 'v0%' | ||
AND GET_LOCK(TABLE_NAME,30) | ||
AND RELEASE_LOCK(TABLE_NAME) | ||
AND f1()=1 | ||
ORDER BY TABLE_NAME; | ||
connection con1; | ||
SELECT RELEASE_LOCK('v01') /* Let the first row evaluate f1 */; | ||
RELEASE_LOCK('v01') | ||
1 | ||
CREATE FUNCTION f2() RETURNS INT RETURN 1 /* Invalidate SP cache*/; | ||
SELECT RELEASE_LOCK('v02') /* Let the second row evaluate f1() */; | ||
RELEASE_LOCK('v02') | ||
1 | ||
DROP FUNCTION f2; | ||
disconnect con1; | ||
connection default; | ||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT | ||
def test v01 VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW | ||
def test v02 VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW | ||
DROP VIEW v01, v02; | ||
DROP FUNCTION f1; | ||
# | ||
# End of 10.2 tests | ||
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
--echo # | ||
--echo # Start of 10.2 tests | ||
--echo # | ||
|
||
--echo # | ||
--echo # MDEV-25243 ASAN heap-use-after-free in Item_func_sp::execute_impl upon concurrent view DDL and I_S query with view and function | ||
--echo # | ||
|
||
|
||
CREATE FUNCTION f1() RETURNS INT RETURN 1; | ||
CREATE VIEW v01 AS SELECT f1(); | ||
CREATE VIEW v02 AS SELECT f1(); | ||
|
||
--connect(con1,localhost,root,,) | ||
SELECT GET_LOCK('v01',30); | ||
SELECT GET_LOCK('v02',30); | ||
--connection default | ||
|
||
--send | ||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS | ||
WHERE TABLE_SCHEMA='test' | ||
AND TABLE_NAME LIKE 'v0%' | ||
AND GET_LOCK(TABLE_NAME,30) | ||
AND RELEASE_LOCK(TABLE_NAME) | ||
AND f1()=1 | ||
ORDER BY TABLE_NAME; | ||
|
||
--connection con1 | ||
--connection con1 | ||
SELECT RELEASE_LOCK('v01') /* Let the first row evaluate f1 */; | ||
CREATE FUNCTION f2() RETURNS INT RETURN 1 /* Invalidate SP cache*/; | ||
SELECT RELEASE_LOCK('v02') /* Let the second row evaluate f1() */; | ||
DROP FUNCTION f2; | ||
--disconnect con1 | ||
|
||
--connection default | ||
--disable_result_log | ||
--reap | ||
--enable_result_log | ||
SELECT RELEASE_LOCK('v01'); | ||
SELECT RELEASE_LOCK('v02'); | ||
|
||
DROP VIEW v01, v02; | ||
DROP FUNCTION f1; | ||
|
||
--echo # | ||
--echo # End of 10.2 tests | ||
--echo # |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
--source include/have_sequence.inc | ||
|
||
--echo # | ||
--echo # Start of 10.2 tests | ||
--echo # | ||
|
||
--echo # | ||
--echo # MDEV-25243 ASAN heap-use-after-free in Item_func_sp::execute_impl upon concurrent view DDL and I_S query with view and function | ||
--echo # | ||
|
||
--echo # The originally reported non-deterministic test. | ||
--echo # It did not fail reliably on every run. | ||
|
||
CREATE TABLE t (a INT); | ||
INSERT INTO t VALUES (1),(2); | ||
CREATE FUNCTION f(b INT) RETURNS INT RETURN 1; | ||
CREATE VIEW v AS SELECT f(SUM(a)) FROM t; | ||
--connect (con1,localhost,root,,test) | ||
--let $conid= `SELECT CONNECTION_ID()` | ||
--delimiter $ | ||
--send | ||
LOOP | ||
CREATE OR REPLACE VIEW vv AS SELECT 1; | ||
END LOOP $ | ||
--delimiter ; | ||
--connection default | ||
--disable_warnings | ||
SELECT v.* FROM v JOIN INFORMATION_SCHEMA.TABLES WHERE DATA_LENGTH = -1; | ||
--enable_warnings | ||
# Cleanup | ||
--replace_result $conid CONID | ||
--eval KILL $conid | ||
--disconnect con1 | ||
--connection default | ||
DROP VIEW IF EXISTS vv; | ||
DROP VIEW v; | ||
DROP FUNCTION f; | ||
DROP TABLE t; | ||
|
||
|
||
--echo # The second test version from the MDEV. | ||
--echo # It failed more reliably, but still was not deterministic. | ||
|
||
|
||
CREATE FUNCTION f() RETURNS INT RETURN 1; | ||
CREATE VIEW v AS SELECT f() FROM seq_1_to_10; | ||
--send SELECT * FROM INFORMATION_SCHEMA.TABLES, v; | ||
--connect(con1,localhost,root,,) | ||
CREATE VIEW v2 AS SELECT 1; | ||
--connection default | ||
--disable_result_log | ||
--reap | ||
--enable_result_log | ||
--disconnect con1 | ||
DROP VIEW v; | ||
DROP VIEW v2; | ||
DROP FUNCTION f; | ||
|
||
--echo # The third test version from the MDEV. | ||
--echo # It failed reliably, and should be deterninistic. | ||
|
||
CREATE FUNCTION f1() RETURNS INT RETURN 1; | ||
CREATE VIEW v01 AS SELECT f1(); | ||
CREATE VIEW v02 AS SELECT f1(); | ||
|
||
--connect(con1,localhost,root,,) | ||
SELECT GET_LOCK('v01',30); | ||
SELECT GET_LOCK('v02',30); | ||
--connection default | ||
|
||
--send | ||
SELECT * FROM INFORMATION_SCHEMA.TABLES | ||
WHERE TABLE_SCHEMA='test' | ||
AND TABLE_NAME LIKE 'v0%' | ||
AND GET_LOCK(TABLE_NAME,30) | ||
AND RELEASE_LOCK(TABLE_NAME) | ||
AND f1()=1 | ||
ORDER BY TABLE_NAME; | ||
|
||
--connection con1 | ||
SELECT RELEASE_LOCK('v01') /* Let the first row evaluate f1 */; | ||
CREATE FUNCTION f2() RETURNS INT RETURN 1 /* Invalidate SP cache*/; | ||
SELECT RELEASE_LOCK('v02') /* Let the second row evaluate f1() */; | ||
DROP FUNCTION f2; | ||
--disconnect con1 | ||
--connection default | ||
--reap | ||
|
||
|
||
DROP VIEW v01, v02; | ||
DROP FUNCTION f1; | ||
|
||
--echo # | ||
--echo # End of 10.2 tests | ||
--echo # |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.