Rule Documentation 
All Packages  Package Correct Operatorgraph  Package Logical Optimization  Package Physical Optimization  FRAMES  NO FRAMES

This transformation rule chooses the concrete algorithm for a logical operator according to the option, if the memorybased variant of our prototype is used (where all the data remains in the main memory), or the diskbased variant is used (where the indices and the intermediate results on demand are stored on disk).
Furthermore, this transformation rule considers specific preferences of the user for specific algorithms. This means that the user can specify (e.g. per command line option) to use e.g. the DBMergeSortedBagMergeJoin as default Join algorithm, which is considered in this transformation rule.
For the Sort operator, the transformation rule checks, whether the intermediate result is already sorted in the correct way (or can be retrieved in a sorted way), such that the Sort operator can be left out.
For the Distinct operator, this transformation rule checks whether or not the intermediate data is sorted in the correct way, such that the effcient SortedDataDistinct operator can be used.
If the RDF3X  Presorting or Hexastore  Presorting approaches are used, then this transformation rule checks, whether or not the fast sorting capability of these approaches can be used in order to use more MergeJoinWithoutSorting/MergeJoinSort operators, the Sort operator can be replaced or SortedDataDistinct can be used.
All Packages  Package Correct Operatorgraph  Package Logical Optimization  Package Physical Optimization  FRAMES  NO FRAMES
