uk.ac.bbk.dcs.automed.qproc.optimise.optimisers
Class CollectionOperatorReorganiser

java.lang.Object
  extended by 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
 
Method Summary
 boolean apply(Cell c)
           
 void finalize()
           
 boolean optimise(ASG g)
           
 boolean optimise(Cell c)
           
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected java.util.logging.Logger logger
Constructor Detail

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

Method Detail

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)