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, t2 where 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:
(g_join (scan t2) (scan t1) )
Attempting to use this plan results in an error message, and the query is not compiled.