mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # 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	MAX_INDEX_LENGTH	TEMPORARY
 | |
| def	test	v01	VIEW	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	VIEW	NULL	NULL
 | |
| def	test	v02	VIEW	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	VIEW	NULL	NULL
 | |
| DROP VIEW v01, v02;
 | |
| DROP FUNCTION f1;
 | |
| #
 | |
| # End of 10.2 tests
 | |
| #
 | 
