mariadb/mysql-test/suite/perfschema/t/statement_program_nested.test
Daniel Black f2ef683b7a MDEV-37705 main.lotofstack /main.sp-error fails in MSAN+Debug
Tests on clang-20/21 had both of these tests overrunning the
stack. The check_stack_overrun function checked the function
earlier with a 2*STACK_MIN_SIZE margin. The exection within
the processing is deeper then when check_stack_overrun was
called.

Raising STACK_MIN_SIZE to 44k was sufficient (and 40k wasn't
oufficient). execution_constants also tested however
the topic mention tests are bigger.

Perfscheam tests
* perfschema.statement_program_nesting_event_check
* perfschema.statement_program_nested
* perfschema.max_program_zero

A small increase to the test thread-stack-size on statement_program_lost_inst
allows this test to continue to pass.
2025-09-24 09:08:16 +10:00

76 lines
3.1 KiB
Text

# -----------------------------------------------------------------------
# Tests for the performance schema nested stored program instrumentation.
# -----------------------------------------------------------------------
--source include/not_embedded.inc
--source include/have_perfschema.inc
--source include/have_innodb.inc
--source include/not_msan_with_debug.inc
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
TRUNCATE TABLE performance_schema.events_statements_history_long;
--echo #################################################
--echo # Quering PS statement summary and history_long #
--echo #################################################
--source suite/perfschema/include/program_nested_setup.inc
ALTER TABLE t2 ENGINE=InnoDB;
--source suite/perfschema/include/program_nested_execution.inc
SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA,
OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL
FROM performance_schema.events_statements_history_long WHERE
CURRENT_SCHEMA='nested_sp' ORDER BY
OBJECT_NAME,NESTING_EVENT_LEVEL,SQL_TEXT,EVENT_NAME;
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
FROM performance_schema.events_statements_summary_by_program
WHERE OBJECT_SCHEMA='nested_sp' ORDER BY OBJECT_NAME;
--echo # clean-up
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
TRUNCATE TABLE performance_schema.events_statements_history_long;
# After truncate the statictics collected will are reset
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
FROM performance_schema.events_statements_summary_by_program
WHERE OBJECT_SCHEMA='nested_sp' ORDER BY OBJECT_NAME;
--source suite/perfschema/include/program_nested_cleanup.inc
# After clean-up the stored programs are removed from PS tables
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
FROM performance_schema.events_statements_summary_by_program
WHERE OBJECT_SCHEMA='nested_sp' ORDER BY OBJECT_NAME;
# Check the intrumentation of stored programs
# when statement/sp/% instruments not timed
--source suite/perfschema/include/program_nested_setup.inc
update performance_schema.setup_instruments set enabled='YES', timed='NO'
where name like "statement/sp/%" order by name;
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
TRUNCATE TABLE performance_schema.events_statements_history_long;
--source suite/perfschema/include/program_nested_execution.inc
# check instrumentation
SELECT EVENT_NAME, TIMER_START, TIMER_END, TIMER_WAIT FROM
performance_schema.events_statements_history_long WHERE
CURRENT_SCHEMA='nested_sp' AND EVENT_NAME like "statement/sp/%";
# clean-up
# Restore the setup
update performance_schema.setup_instruments set enabled='YES', timed='YES'
where name like "statement/sp/%" order by name;
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
TRUNCATE TABLE performance_schema.events_statements_history_long;
--source suite/perfschema/include/program_nested_cleanup.inc