Introduction to the sys.ps_thread_stack() Function in MySQL

In MySQL, the sys.ps_thread_stack() function returns a JSON formatted stack of all statements, stages, and events within the Performance Schema for a given thread ID.

Syntax

The syntax goes like this:

sys.ps_thread_stack(in_thread_id,in_verbose)

Where in_thread_id is the thread ID to check, and in_verbose is a BOOLEAN (i.e. either TRUE or FALSE) that indicates whether or not to include file:lineno information in the events.

The first argument should match the THREAD_ID column from one of the rows in the performance_schema.threads table.

Example

Here’s an example to demonstrate:

SELECT sys.ps_thread_stack(138, FALSE);

Result:

{
    "rankdir": "LR",
    "nodesep": "0.10",
    "stack_created": "2023-06-15 10:03:11",
    "mysql_version": "8.0.29",
    "mysql_user": "root@localhost",
    "events": []
}

Passing the Wrong Number of Arguments

Passing the wrong number of arguments results in an error:

SELECT sys.ps_thread_stack( 138 );

Result:

ERROR 1318 (42000): Incorrect number of arguments for FUNCTION sys.ps_thread_stack; expected 2, got 1

The same applies when we don’t pass any arguments:

SELECT sys.ps_thread_stack( );

Result:

ERROR 1318 (42000): Incorrect number of arguments for FUNCTION sys.ps_thread_stack; expected 2, got 0