Access MI_FPARAM routine-state information
When the routine manager calls a UDR, it passes the routine-state information as an extra argument, called the function-parameter structure, to the routine. This function-parameter structure, MI_FPARAM, holds the routine-state information for the C UDR with which it is associated.
This MI_FPARAM structure that the routine manager passes
lasts for the duration of an SQL command (subquery execution). The
following table summarizes the memory operations for an MI_FPARAM structure.
Memory duration | Memory operation | Function name |
---|---|---|
PER_COMMAND | Constructor | Routine manager (when it starts a UDR) mi_fparam_allocate(), mi_fparam_copy() |
Destructor | Routine manager (when it exits a UDR) mi_fparam_free() |
Most UDRs do not need to access this routine-state information.
For such routines, you do not have to include an MI_FPARAM structure
as a parameter in the C declaration. Your UDR needs to declare an MI_FPARAM parameter
only if it needs to perform one of the following tasks.
Task | More information |
---|---|
Obtain information about each routine argument, such as data type and whether it is NULL | Check routine arguments |
Obtain or set information about each return value, such as data type and whether it is NULL | Access return-value information |
Maintain user-state information between invocations of the routine for the duration of a single SQL statement | Saving a user state |
Obtain information about the routine itself, such as the routine identifier and iterator information | Obtain additional routine information |
Tip: When you declare an MI_FPARAM parameter,
this declaration must be the last parameter in the C declaration of
your UDR. For more information, see The MI_FPARAM argument.
The UDR can then use the DataBlade®
API accessor
functions that Argument information in an MI_FPARAM structure, Return-value information in the MI_FPARAM
structure, and Other routine information
in the MI_FPARAM structure list
to access values in the MI_FPARAM structure.
Restriction: The MI_FPARAM structure is an opaque C structure
to DataBlade®
API modules.
Do not access its internal fields directly. The internal structure
of MI_FPARAM might change in future releases. Therefore, to
create portable code, always use the accessor functions for this structure
to obtain and store values.
A UDR can also allocate an MI_FPARAM structure for a UDR that it invokes with the Fastpath interface. For more information, see A user-allocated MI_FPARAM structure.