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 HCL OneDB™ 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.