Disabling Rules

Previous Next

For each SQL statement executed in an Import Task or SQL Task, you can set Disable Rules = Yes. The result is that:

In terms of functionality, USoft rule checks are bypassed, ie., they are not performed. USoft rule checks include constraint checks, relationship checks, mandatory column checks, domain checks such as checks for allowed values, and subtype group checks.

In terms of performance, execution is likely to be faster.

CAUTION: By setting Disable Rules = Yes, you risk introducing data that violates rules defined in USoft Definer. Consider setting Disable Rules = Yes ONLY if you have a reason to improve performance and you know that the data has the required quality, for example because it comes from a trusted source and is received using a tried-and-tested method. Remember that you can use USoft Benchmark reports to detect constraint violations, relationship violations, column violations and domain violations after-the-fact.

Background

Technically, with Disable Rules = No (the default), the USoft Rules Engine performs checks that you defined in USoft Definer. This potentially involves sending individual SQL statements to the RDBMS for each individual record that is handled. By contrast, a SQL statement with Disable Rules = Yes is sent directly to the RDBMS to be processed as-is. With Disable Rules = Yes, the RDBMS will process the statement in a set-oriented fashion, which can be very much faster than record-by-record handling.

If the statement is of a USoft-specific type, or contains USoft-specific elements, then it cannot be processed by the RDBMS as-is. For this reason, if you set Disable Rules = Yes for such a statement, this setting is silently ignored. This applies to the following cases:

The table manipulated by the statement is a temporary table.

The statement refers to a component table.

The statement contains the INVOKE keyword, or function call syntax that calls an RDMI component.

The statement contains the RECORDS keyword.

The statement contains one of the functions ELAPSEDTRANSACTIONTIME(), ELAPSEDQUERYTRANSACTIONTIME(), RDBMSTYPE(), USERGROUP().

If a statement has Disable Rules = Yes, USoft does not attempt to generate a sequence number. In practice, this means that you never want to set Disable Rules = Yes for INSERT statements that rely on sequence number generation; the effect will be undesirable.