Execution State (a_v4_extfn_state)

The a_v4_extfn_state enumerated type represents the query processing phase of a UDF.

Implementation

typedef enum a_v4_extfn_state {
    EXTFNAPIV4_STATE_INITIAL,                   // Server initial state, not used by UDF
    EXTFNAPIV4_STATE_ANNOTATION,                // Annotating parse tree with UDF reference
    EXTFNAPIV4_STATE_OPTIMIZATION,              // Optimizing
    EXTFNAPIV4_STATE_PLAN_BUILDING,             // Building execution plan
    EXTFNAPIV4_STATE_EXECUTING,                 // Executing UDF and fetching results from UDF
    EXTFNAPIV4_STATE_LAST
} a_v4_extfn_state;

Members Summary

Member Description
EXTFNAPIV4_STATE_INITIAL Server initial phase. The only UDF method that is called during this query processing phase is _start_extfn.
EXTFNAPIV4_STATE_ANNOTATION Annotating parse tree with UDF reference. The UDF is not invoked during this phase.
EXTFNAPIV4_STATE_OPTIMIZATION Optimizing. The server calls the UDF’s _start_extfn method, followed by the _describe_extfn function.
EXTFNAPIV4_STATE_PLAN_BUILDING Building a query execution plan. The server calls the UDF’s _describe_extfn function.
EXTFNAPIV4_STATE_EXECUTING Executing UDF and fetching results from UDF. The server calls the _describe_extfn function before starting to fetch data from the UDF. The server then calls _evaluate_extfn to start the fetch cycle. During the fetch cycle, the server calls the functions defined in a_v4_extfn_table_func. When fetching finishes, the server calls the UDF’s _close_extfn function.
EXTFNAPIV4_STATE_LAST First illegal value for v4 API. Out-of-band value.

Description

The a_v4_extfn_state enumeration indicates which stage of UDF execution the server is in. When the server makes a transition from one phase to the next, the server informs the UDF it is leaving the previous phase by calling the UDF’s _leave_state_extfn function. The server informs the UDF it is entering the new phase by calling the UDF’s _enter_state_extfn function.

The query processing phase of a UDF restricts the operations that the UDF can perform. For example, in the Annotation phase, the UDF can retrieve the data types only for constant parameters.