PARALLELIZABLE

Use the PARALLELIZABLE modifier to indicate that an external routine can be executed in parallel in the context of a parallelizable data query (PDQ).

By default, an external routine is non-parallelizable; that is, it executes in sequence.

If your UDR has a complex or smart large object data type as either a parameter or a returned value, you cannot use the PARALLELIZABLE modifier.

If you specify the PARALLELIZABLE modifier for an external routine that cannot be parallelizable, the database server returns a runtime error.

A C language UDR that calls only PDQ thread-safe DataBlade® API functions is parallelizable. These categories of DataBlade® API functions are PDQ thread safe:
  • Data handling

    An exception in this category is that collection manipulation functions (mi_collection_*) are not PDQ thread safe.

  • Session, thread, and transaction management
  • Function execution
  • Memory management
  • Exception handling
  • Callbacks
  • Miscellaneous

For details of the DataBlade® API functions that are included in each category, see the Informix® DataBlade® API Function Reference.

If your C language UDR calls a function that is not included in one of these categories, it is not PDQ thread safe and is therefore not parallelizable.

To parallelize Java language UDR calls, the database server must have multiple instances of JVPs. UDRs written in the Java language and that open a JDBC connection are not parallelizable.