Choose the user-defined VP class

When you run your C UDR in a user-defined VP, you can relax some, but not all, of the CPU VP safe-code requirements (Safe-code requirements for a well-behaved UDR ). You must choose a user-defined VP that is appropriate for the ill-behaved traits of your UDR. The following types of user-defined VPs allow a C UDR to contain the ill-behaved traits.
Type of user-defined VP Purpose
Yielding user-defined VP Prevents a UDR from blocking the CPU VP because it blocks a user-defined VP thread
Nonyielding user-defined VP Preserves global state of the VP across one UDR invocation
Single-instance user-defined VP Preserves global state of the VP across all UDR invocations and instances
Important: The user-defined VP class frees the CPU VPs from effects of some ill-behaved traits of a UDR. However, this VP class provides little protection from process failures. Even when the UDR runs in a user-defined VP class, programming errors that cause process failures can severely affect the database server.