MOT JIT Diagnostics
mot_jit_detail
This built-in function is used to query the details about JIT compilation (code generation).
Usage Examples
select * from mot_jit_detail();
select proc_oid, substr(query, 0, 50), namespace, jittable_status, valid_status, last_updated, plan_type, codegen_time from mot_jit_detail();
Output Description
| Field | Description | 
|---|
| proc_oid | Procedure OID (Real Object ID of the procedure in the database). 0 for queries. | 
| query | Query string or stored procedure name. | 
| namespace | Namespace to which the query or procedure belongs to. For procedures and top level queries, the value will be GLOBAL. For all the invoke queries, sub-queries, this field will show the parent information. | 
| jittable_status | Whether the query or procedure is jittable:jittable – Query or procedure is jittableunjittable - Query or procedure is not jittableinvalid - Invalid state (temporary state after invalidation due to DDL or when JIT compilation is in progress) | 
| valid_status | Whether the query or procedure is valid or not: valid – Query or procedure is validunavailable – JIT compilation is in progresserror – Error statedropped – Procedure is droppedreplaced – Procedure is replaced
 | 
| last_updated | Timestamp when the status was updated last time. | 
| plan_type | Whether this is a stored procedure (SP) or query type. | 
| codegen_time | Total time taken for code generation (JIT compilation), in micro seconds. | 
| verify_time | LLVM Verification time (internal), in micro seconds. | 
| finalize_time | LLVM Finalize time (internal), in micro seconds. | 
| compile_time | LLVM Compile time (internal), in micro seconds. | 
mot_jit_profile
This built-in function is used to query the profiling data (performance data) of the query or stored procedure execution.
Usage Examples
select * from mot_jit_profile();
select proc_oid, id, parent_id, substr(query, 0, 50), namespace, weight, total, self, child_gross, child_net from mot_jit_profile();
Output Description
| Field | Description | 
|---|
| proc_oid | Procedure OID (Real Object ID of the procedure in the database). 0 for queries. | 
| id | Internal ID to manipulate the output. | 
| parent_id | Parent ID (Internal ID of the parent). Applicable only for sub-queries and sub-procedures. -1 for top-level queries and procedures. | 
| query | Query string or stored procedure name. | 
| namespace | Namespace to which the query or procedure belongs to. For procedures and top level queries, the value will be GLOBAL. For all the invoke queries, sub-queries, this field will show the parent information. | 
| weight | The average number of times the sub-query or sub-procedure was executed (per one parent SP execution), in micro seconds. | 
| total | Total time taken to execute the query or procedure, in micro seconds. | 
| self | Time taken by the query or procedure excluding the time taken by the sub-queries & sub-procedures, in micro seconds. | 
| child_gross | Total time spent in execution of all the sub-queries & sub-procedures (child_net + time spent to prepare for execution of all the sub-queries & sub-procedures), in micro seconds. | 
| child_net | Total time taken by all the sub-queries & sub-procedures i.e., ∑ (total of child * weight), in micro seconds. | 
| def_vars | Time taken to define variables (internal), in micro seconds. | 
| init_vars | Time taken to initialize variables (internal), in micro seconds. | 
Miscellaneous
Another useful system table to get information about stored procedures and functions is pg_proc.
For example, body of a stored procedure can be queried using the following query:
select proname,prosrc from pg_proc where proname='sp_call_filter_rules_100_1';
openGauss 2025-10-31 07:42:18