Class Summary |
ChooseOptimiser |
This Class optimises expressions involving the "choose" built-in function. |
CollectionOperatorReorganiser |
This optimiser is to reorganise the order of arguments in expressions containing ++, --,
intersect & union operators,
so that constructs from the same schema come closer in the
query tree and therefore bigger sub queries can be sent to the
a datasource wrapper. |
CollectionSimplification |
This optimiser eliminates Constructors Null, Any, Void, Nil, SNil and BNil where possible. |
CommonSubexpressionElimination |
|
ComprehensionDistributor |
This optimiser is used to decompose a comprehension whose generators contain append expressions, such as [x|x<-(E1++E2)]. |
ComprehensionHeadSimplifier |
Rewrites [V(h)|Q] to map (lambda h V(h)) [h|Q] |
ComprehensionHeadSimplifierUndo |
Rewrites map (lambda h V(h)) [h|Q] to [V(h)|Q] |
ConstantInPatternOptimiser |
Detects equality filters between a var and a constant, deletes the filter and replaces the var in generators with the constant |
EmptyJoinOptimiser |
|
EqualityFilterOptimiser |
Rewrites expressions of the form ({op11, ..., op1n} = {op21, ..., op2n}) to ((op11=op21); ...; (op1n=op2n)) |
NestingOptimiser |
This optimiser is used to reorganise generators in comprehensions. |
OptimisationUtility |
|
RelationalMetadata |
Class storing relational metadata. |
RelationSKJEliminator |
This class removes self-join of relations over their key arising from the AutoMed relational model encoding
For example, [{k1,n,m}|{p1,n}<-[{{k1,..,kn},a1}|{k1,..,kn,a1,a2}<-<>]; {p2,m}<-[{{k1,..,kn},a2}|{k1,..,kn,a1,a2}<-<>];
p1 = p2]
becomes:
[{{k1,...,kn},a1,a2}|{k1,..,kn,a1,a2}<-<>]
Although table <> may contain several key attributes, we assume that {p1,n} and {p2,m} will be pair
The steps for the simplification are:
1. |
SQLWrapperSKJOptimiser |
Removes self-key joins occurring because of the dual layer of schemas that the SQLModelDef class introduces. |
UnnestOptimiser |
Unnests comprehensions. |