When executing queries on inner tables so that join conditions are expanded to match the block of outer table records, the following OpenAccess SDK SQL engine API behavior occurs:
• dam_getRestrictionList
This function returns a condition list with conditions on a single column. The condition list should be interpreted as having a list of OR conditions. When the condition on the column is a join condition (emp.deptno=dept.deptno), dam_getRestrictionList("deptno") returns the condition list that contains conditions for each outer table BlockJoinRowList (the list that has unique outer table rows).
(deptno=1 OR deptno=2 OR deptno=5 OR deptno=8)
To navigate all of the conditions, the IP should use dam_getFirstCond() anddam_getNextCond().
• dam_getOptimalIndexAndConditions
This function returns condition lists where each list has conditions on the different columns in the index: (CONDA1 AND CONDB1) OR (CONDA2 AND CONDB2). When a condition on one or more of the index columns is a join condition, the condition lists are expanded to contain a condition for each outer table BlockJoinRowList (the list that has unique outer table rows).
order.orderno = 1 AND order.customerno=CUSTOMER.customerno
When the IP is processing a query on an order table that has multiple column index on customerno, orderno, the dam_getOptimalIndexAndConditions() returns:
orderno=1 AND customerno=1) OR
orderno=1 AND customerno=2) OR
orderno=1 AND customerno=5) OR
orderno=1 AND customerno=8)
Note: The IP should use dam_getFirstCondList(), dam_getNextCondList() to navigate all of the condition lists.
These functions expand the condition lists reported to contain the condition for each of the outer table BlockJoinRowList. To navigate all of the condition lists, the IP should use dam_getFirstCondList() and dam_getNextCondList().