public static void TransformOrdering(Querytree tree, List<Treenode> nodelist, List<Treenode> operands) { Treenode lastnode = null; foreach (Treenode node in nodelist) { Treenode operand1 = JoinOptimizer.getOperand(node, operands); Treenode operand2 = JoinOptimizer.getOperand(node, operands); if (operand2 != null) { node.Operand1 = operand1; operand1.Parent = node; node.Operand2 = operand2; operand2.Parent = node; } else { lastnode.Parent = node; node.Operand1 = lastnode; node.Operand2 = operand1; } lastnode = node; } Treenode checknode = tree.Root; while (checknode.Operand1.NodeType != Treenode.Type.join) checknode = checknode.Operand1; checknode.Operand1 = lastnode; lastnode.Parent = checknode; }
public static void selectionPushDowns(Querytree tree) { if (tree != null) { List<Treenode> nodes = new List<Treenode>(); findSelectNodes(nodes, tree.Root); foreach (Treenode node in nodes) selectionPushDown(node, node, node.Parent, node.Operand1); } }
public static void conjuctiveSelectionsSeparation(Querytree tree) { if (tree != null) conjuctiveSelectionSeparation(tree.Root, null); }
public static void selectOperators(Querytree tree) { if (tree != null) selectOptimalOperator(tree.Root); }
public static void startPushDown(List<ConditionElement> elements, Querytree tree) { if (tree != null) pushDown(elements, tree.Root); }