22 #include <drizzled/sql_base.h>
23 #include <drizzled/sql_select.h>
24 #include <drizzled/memory/sql_alloc.h>
25 #include <drizzled/optimizer/range.h>
26 #include <drizzled/optimizer/range_param.h>
27 #include <drizzled/optimizer/sel_arg.h>
28 #include <drizzled/optimizer/sel_tree.h>
29 #include <drizzled/optimizer/sel_imerge.h>
34 optimizer::SEL_IMERGE::SEL_IMERGE()
36 trees(&trees_prealloced[0]),
38 trees_end(trees + PREALLOCED_TREES)
44 if (trees_next == trees_end)
46 uint32_t old_elements= trees_end - trees;
50 trees_next= trees + old_elements;
51 trees_end= trees + 2 * old_elements;
53 *(trees_next++)= tree;
61 if (sel_trees_can_be_ored(**tree, new_tree, param))
63 *tree = tree_or(¶m, *tree, &new_tree);
66 if (((*tree)->type == SEL_TREE::MAYBE) ||
67 ((*tree)->type == SEL_TREE::ALWAYS))
75 or_sel_tree(¶m, &new_tree);
80 int optimizer::SEL_IMERGE::or_sel_imerge_with_checks(RangeParameter& param, SEL_IMERGE& imerge)
82 for (SEL_TREE** tree= imerge.trees; tree != imerge.trees_next; tree++)
84 if (or_sel_tree_with_checks(param, **tree))
TODO: Rename this file - func.h is stupid.