~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/optimizer/sel_tree.cc

  • Committer: patrick crews
  • Date: 2011-06-08 03:02:27 UTC
  • mto: This revision was merged to the branch mainline in revision 2329.
  • Revision ID: gleebix@gmail.com-20110608030227-updkyv2652zvfajc
Initial voodoo worked to give us a crashme mode.  Need docs still

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008-2009 Sun Microsystems
 
4
 *  Copyright (C) 2008-2009 Sun Microsystems, Inc.
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
17
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
18
 */
19
19
 
20
 
#include "config.h"
 
20
#include <config.h>
21
21
 
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"
 
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>
30
30
 
31
31
using namespace std;
32
32
using namespace drizzled;
91
91
                               List<optimizer::SEL_IMERGE> *im1,
92
92
                               List<optimizer::SEL_IMERGE> *im2)
93
93
{
94
 
  optimizer::SEL_IMERGE *imerge= im1->head();
95
 
  im1->empty();
 
94
  optimizer::SEL_IMERGE *imerge= &im1->front();
 
95
  im1->clear();
96
96
  im1->push_back(imerge);
97
97
 
98
 
  return imerge->or_sel_imerge_with_checks(param, im2->head());
 
98
  return imerge->or_sel_imerge_with_checks(param, &im2->front());
99
99
}
100
100
 
101
101
 
112
112
                               optimizer::SEL_TREE *tree)
113
113
{
114
114
  optimizer::SEL_IMERGE *imerge= NULL;
115
 
  List_iterator<optimizer::SEL_IMERGE> it(*im1);
 
115
  List_iterator<optimizer::SEL_IMERGE> it(im1->begin());
116
116
  while ((imerge= it++))
117
117
  {
118
118
    if (imerge->or_sel_tree_with_checks(param, tree))
191
191
      }
192
192
      optimizer::SEL_IMERGE *merge= NULL;
193
193
      /* both trees are "range" trees, produce new index merge structure */
194
 
      if (! (result= new optimizer::SEL_TREE()) || 
195
 
          ! (merge= new optimizer::SEL_IMERGE()) ||
196
 
          (result->merges.push_back(merge)) ||
197
 
          (merge->or_sel_tree(param, tree1)) ||
198
 
          (merge->or_sel_tree(param, tree2)))
 
194
                        result= new optimizer::SEL_TREE();
 
195
                        merge= new optimizer::SEL_IMERGE();
 
196
                        result->merges.push_back(merge);
 
197
      if (merge->or_sel_tree(param, tree1) || merge->or_sel_tree(param, tree2))
199
198
      {
200
199
        result= NULL;
201
200
      }