There are some limits to join orders and join types, depending on the type of query. One example is outer joins, such as:
select * from t1 left join t2 on c11 = c21
Adaptive Server requires the outer member of the outer join to be the outer table during join processing. Therefore, this abstract plan is illegal:
(join (scan t2) (scan t1) )
Attempting to use this plan results in an error message, the AP application fails, and the optimizer makes the best attempt to finish compiling the query.