Uses of PER_STMT_EXEC memory duration

The PER_STMT_EXEC memory duration is useful for communications between UDRs, parallel execution, user-defined aggregates, and named memory, and for memory allocations within an end-of-statement callback (if you have information to pass to the callback).

Important: Any memory with a duration higher than PER_COMMAND can have multiple threads access it. Consider whether you need to handle concurrency issues for any PER_STMT_EXEC memory you allocate. For more information, see Handling concurrency issues.
Several DataBlade® API constructor functions allocate their DataBlade® API data type structure with a PER_STMT_EXEC memory duration. The following table lists DataBlade® API data type structures that have a memory duration of PER_STMT_EXEC.
Table 1. DataBlade® API data type structures with a PER_STMT_EXEC memory duration
DataBlade® API data type structure DataBlade® API constructor function DataBlade® API destructor function
Connection descriptor (MI_CONNECTION) mi_open() mi_close()
Save-set structure (MI_SAVE_SET) mi_save_set_create() mi_save_set_destroy()
Switching the current memory duration before one of the constructor functions in DataBlade API data type structures with a PER_STMT_EXEC memory duration does not change the PER_STMT_EXEC memory duration of the allocated DataBlade® API structure. These data type structures are freed by their destructor function or when execution of the current SQL statement completes. To retain access to some of these DataBlade® API data type structures after the statement completes, you must save them at the per-session level.
Tip: The DataBlade® API supports the ability to save information at a per-session level. This ability, however, is an advanced feature of the DataBlade® API. For more information, see Obtain a session-duration connection descriptor.