uk.ac.bbk.dcs.automed.qproc.optimise.optimisers
Class CollectionOperatorReorganiser
java.lang.Object
uk.ac.bbk.dcs.automed.qproc.optimise.optimisers.CollectionOperatorReorganiser
public class CollectionOperatorReorganiser
- extends java.lang.Object
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.
Note: the arguments to these collection operators are assumed to
be either (a) schemes, or
(b) of the form [h|p<-<>], h & p are patterns
- Author:
- Hao Fan, Lucas Zamboulis
|
Field Summary |
protected java.util.logging.Logger |
logger
|
|
Constructor Summary |
CollectionOperatorReorganiser()
Considering the fellowing cases:
$x ++ ($y ++ $z) // Two++A
($x ++ $y) ++ $z // Two++B
($x ++ $y) ++ ($z ++ $m) // Three++
$x -- ($y -- $z) // unchangable
($x -- $y) -- $z // Two--
($x -- $y) -- ($z -- $m) // Three--
$x ++ ($y -- $z) // unchangable
($x -- $y) ++ $z // unchangable
($x -- $y) ++ ($z -- $m) // unchangable
$x -- ($y ++ $z) // One--One++
($x ++ $y) -- $z // unchangable
($x ++ $y) -- ($z ++ $m) // One++One--One++
($x ++ $y) ++ ($z -- $m) // Two++One--
($x -- $y) ++ ($z ++ $m) // One--Two++
($x ++ $y) -- ($z -- $m) // unchangable
($x -- $y) -- ($z ++ $m) // Two--One++
$x union ($y union $z) // TwoUnionA
($x union $y) union $z // TwoUnionB
($x union $y) union ($z union $m) //ThreeUnion
$x intersect ($y intersect $z) //TwoIntersectA
($x intersect $y) intersect $z //TwoIntersectB
($x intersect $y) intersect ($z intersect $m) //ThreeIntersect |
| Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
logger
protected java.util.logging.Logger logger
CollectionOperatorReorganiser
public CollectionOperatorReorganiser()
- Considering the fellowing cases:
$x ++ ($y ++ $z) // Two++A
($x ++ $y) ++ $z // Two++B
($x ++ $y) ++ ($z ++ $m) // Three++
$x -- ($y -- $z) // unchangable
($x -- $y) -- $z // Two--
($x -- $y) -- ($z -- $m) // Three--
$x ++ ($y -- $z) // unchangable
($x -- $y) ++ $z // unchangable
($x -- $y) ++ ($z -- $m) // unchangable
$x -- ($y ++ $z) // One--One++
($x ++ $y) -- $z // unchangable
($x ++ $y) -- ($z ++ $m) // One++One--One++
($x ++ $y) ++ ($z -- $m) // Two++One--
($x -- $y) ++ ($z ++ $m) // One--Two++
($x ++ $y) -- ($z -- $m) // unchangable
($x -- $y) -- ($z ++ $m) // Two--One++
$x union ($y union $z) // TwoUnionA
($x union $y) union $z // TwoUnionB
($x union $y) union ($z union $m) //ThreeUnion
$x intersect ($y intersect $z) //TwoIntersectA
($x intersect $y) intersect $z //TwoIntersectB
($x intersect $y) intersect ($z intersect $m) //ThreeIntersect
finalize
public void finalize()
- Overrides:
finalize in class java.lang.Object
apply
public boolean apply(Cell c)
throws java.lang.Exception
- Throws:
java.lang.Exception
optimise
public boolean optimise(Cell c)
throws QueryOptimisationException
- Throws:
QueryOptimisationException
optimise
public boolean optimise(ASG g)