mariadb/mysql-test/main/max_session_mem_used.test
2025-11-04 18:27:52 +01:00

179 lines
4 KiB
Text

# memory usage is sensitive to valgrind/ps-protocol/embedded
source include/not_msan.inc;
source include/not_valgrind.inc;
source include/no_protocol.inc;
source include/not_embedded.inc;
source include/have_64bit.inc;
source include/have_sequence.inc;
--echo #
--echo # MDEV-23836: Assertion `! is_set() || m_can_overwrite_status' in
--echo # Diagnostics_area::set_error_status (interrupted ALTER TABLE under LOCK)
--echo #
CREATE TABLE t1 (a INT);
SELECT * FROM t1;
--error ER_NO_SUCH_TABLE
ALTER TABLE x MODIFY xx INT;
SET SESSION max_session_mem_used= 8192;
--error 0,ER_OPTION_PREVENTS_STATEMENT
LOCK TABLE t1 WRITE;
--disable_warnings
--error 0,ER_OPTION_PREVENTS_STATEMENT
ALTER TABLE t1 CHANGE COLUMN IF EXISTS b c INT;
--enable_warnings
SET SESSION max_session_mem_used = DEFAULT;
UNLOCK TABLES;
DROP TABLE t1;
--echo #
--echo # MDEV-27978 wrong option name in error when exceeding max_session_mem_used
--echo #
SET SESSION max_session_mem_used = 8192;
--error ER_OPTION_PREVENTS_STATEMENT
SELECT * FROM information_schema.processlist;
SET SESSION max_session_mem_used = DEFAULT;
#
# errors caused by max_session_mem_used
#
--disable_result_log
set max_session_mem_used = 50000;
--error 0,ER_OPTION_PREVENTS_STATEMENT
select * from seq_1_to_1000;
set max_session_mem_used = 8192;
--error 0,ER_OPTION_PREVENTS_STATEMENT
select * from seq_1_to_1000;
--enable_result_log
# We may not be able to execute any more queries with this connection
# because of too little memory
set max_session_mem_used = DEFAULT;
--echo #
--echo # MDEV-35828: Assertion fails in alloc_root() when memory causes it to call itself
--echo #
CREATE TEMPORARY TABLE t1 (a INT,b INT);
INSERT INTO t1 VALUES (1,1),(2,2);
SET max_session_mem_used=8192;
--error ER_OPTION_PREVENTS_STATEMENT
SELECT * FROM (t1 AS t2 LEFT JOIN t1 AS t3 USING (a)),t1;
SET max_session_mem_used=DEFAULT;
DROP TABLE t1;
--echo #
--echo # MDEV-23824 SIGSEGV in end_io_cache on REPAIR LOCAL TABLE for Aria table
--echo #
CREATE TABLE t1 (i INT) ENGINE=Aria;
INSERT INTO t1 VALUES (1);
SET max_session_mem_used=50000;
--disable_result_log
REPAIR LOCAL TABLE t1 USE_FRM;
REPAIR LOCAL TABLE t1;
--enable_result_log
DROP TABLE t1;
SET max_session_mem_used=default;
--echo # End of 10.6 tests
--echo #
--echo # MDEV-37489: SIGSEGV in get_param_default_value | store_schema_params
--echo #
--DELIMITER //
CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func())
BEGIN
SELECT x;
END;
//
--DELIMITER ;
SET SESSION max_session_mem_used=8192;
--ERROR ER_OPTION_PREVENTS_STATEMENT
CALL p0();
SET @@max_session_mem_used=DEFAULT;
--ERROR ER_SP_DOES_NOT_EXIST
CALL p0();
SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
--echo # with func() defined
--DELIMITER //
CREATE FUNCTION func(x INT DEFAULT 10) RETURNS INT
BEGIN
RETURN x;
END;
//
CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func())
BEGIN
SELECT x;
END;
//
--DELIMITER ;
SET SESSION max_session_mem_used=8192;
--ERROR ER_OPTION_PREVENTS_STATEMENT
CALL p0();
SET @@max_session_mem_used=DEFAULT;
CALL p0();
SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
--echo # with multiple functions
--DELIMITER //
CREATE FUNCTION func2(x INT DEFAULT 10) RETURNS INT
BEGIN
RETURN x;
END;
//
CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func(), y INT DEFAULT func2())
BEGIN
SELECT x, y;
END;
//
--DELIMITER ;
SET SESSION max_session_mem_used=8192;
--ERROR ER_OPTION_PREVENTS_STATEMENT
CALL p0();
SET @@max_session_mem_used=DEFAULT;
CALL p0();
SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
--echo # with function and constant default param
--DELIMITER //
CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func(), y INT DEFAULT func2(), z INT DEFAULT 10)
BEGIN
SELECT x, y, z;
END;
//
--DELIMITER ;
SET SESSION max_session_mem_used=8192;
--ERROR ER_OPTION_PREVENTS_STATEMENT
CALL p0();
SET @@max_session_mem_used=DEFAULT;
CALL p0();
SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
DROP PROCEDURE p0;
DROP FUNCTION func;
DROP FUNCTION func2;
--echo # End of 11.8 tests