~drizzle-trunk/drizzle/development

1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2010 Padraig O'Sullivan
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU General Public License
17
 *  along with this program; if not, write to the Free Software
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 */
20
1475.1.2 by Padraig O'Sullivan
Fixed various compiler errors in access method classes due to forgetting includes.
21
#include "config.h"
22
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
23
#include "drizzled/sql_select.h"
24
#include "drizzled/join_table.h"
25
#include "drizzled/optimizer/access_method.h"
26
#include "drizzled/optimizer/access_method_factory.h"
27
#include "drizzled/optimizer/access_method/system.h"
28
#include "drizzled/optimizer/access_method/const.h"
29
#include "drizzled/optimizer/access_method/unique_index.h"
30
#include "drizzled/optimizer/access_method/index.h"
31
#include "drizzled/optimizer/access_method/scan.h"
32
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
33
#include <boost/shared_ptr.hpp>
34
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
35
using namespace drizzled;
36
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
37
boost::shared_ptr<optimizer::AccessMethod>
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
38
optimizer::AccessMethodFactory::createAccessMethod(enum access_method type)
39
{
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
40
  boost::shared_ptr<optimizer::AccessMethod> am_ret;
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
41
42
  switch (type)
43
  {
44
  case AM_SYSTEM:
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
45
    am_ret.reset(new optimizer::System());
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
46
    break;
47
  case AM_CONST:
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
48
    am_ret.reset(new optimizer::Const());
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
49
    break;
50
  case AM_EQ_REF:
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
51
    am_ret.reset(new optimizer::UniqueIndex());
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
52
    break;
53
  case AM_REF_OR_NULL:
54
  case AM_REF:
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
55
    am_ret.reset(new optimizer::Index());
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
56
    break;
57
  case AM_ALL:
1475.1.4 by Padraig O'Sullivan
Used shared_ptr for the pointer returned from the factory method since we can use boost now...yay
58
    am_ret.reset(new optimizer::Scan());
1475.1.1 by Padraig O'Sullivan
Added interface and various implementations to abstract out the concept of an access method. Also added a factory class for creating an instance of an access method.
59
    break;
60
  default:
61
    break;
62
  }
63
  
64
  return am_ret;
65
}
66