The following sections will outline issues to be aware of when back-porting code from Qorus 3.1 to Qorus 3.0.

Note the following documentation references:

No Mappers or Value Maps

Functionality configured in mappers and value maps must be implemented by hand in Qorus 3.0. The Mapper and TableMapper modules are available though with reduced functionality

No BulkSqlUtil

BulkSqlUtil was introduced in Qorus 3.1.0. To implement the equivalent of bulk DML in Qorus 3.0.4, custom types, collections and stored procedures need to be implemented in PL/SQL instead.

No Coalescing Operators

?? and ?* were introduced in Qorus 3.1.0; trying to use them in Qorus 3.0.4 will result in syntax errors in your code.

SQLStatement::fetchColumns() and SQLStatement::fetchRows() not usable

Due to a bug in the oracle driver in Qorus 3.0.4 (that was only fixed in Qorus 3.1), trying to use SQLStatement::fetchRows() and SQLStatement::fetchColumns() will result in an error with Qorus 3.0.4. Use SQLStatement::fetchRow() instead.

No Column Functions in the Schema module

The Schema module in Qorus 3.0.4 has no c_*() functions (ex: c_varchar(), c_number(), etc); these were introduced in the Schema module in Qorus 3.1.0.

No Testing Infrastructure

QUnit and QorusInterfaceTest were introduced with Qorus 3.1; Qorus 3.0.4 has no testing infrastructure. Please note that since Qorus 3.1 is backwards-compatible with Qorus 3.0.4, you can still write tests for Qorus 3.1 and test your interfaces on Qorus 3.1.

No SQL Cache

Qorus 3.0.4 has no SQL cache API, so the get_sql_table() API function is not available.

Instead just declare a Table object directly with the following syntax:
%requires SqlUtil

sub step_func() {
    DatasourcePool dsp = get_datasource_pool("my-datasource");
    Table table(dsp, "table_name");
    # ...