~drizzle-trunk/drizzle/development

1273.20.1 by Brian Aker
Basic engine with test.
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2010 Brian Aker
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
21
#ifndef PLUGIN_SCHEMA_ENGINE_SCHEMA_H
22
#define PLUGIN_SCHEMA_ENGINE_SCHEMA_H
23
24
#include <assert.h>
25
#include <drizzled/plugin/storage_engine.h>
1678.1.1 by Monty Taylor
Removed our unordered wrappers. We use Boost now.
26
#include <boost/unordered_map.hpp>
1755.2.6 by Brian Aker
Remove usage of non-boost lock type.
27
#include <boost/thread/shared_mutex.hpp>
1273.20.1 by Brian Aker
Basic engine with test.
28
29
extern const drizzled::CHARSET_INFO *default_charset_info;
30
31
static const char *schema_exts[] = {
32
  NULL
33
};
34
35
class Schema : public drizzled::plugin::StorageEngine
36
{
1642 by Brian Aker
This adds const to SchemaIdentifier.
37
  bool writeSchemaFile(const drizzled::SchemaIdentifier &schema_identifier, const drizzled::message::Schema &db);
1749.3.14 by Brian Aker
Update to use the identifier (and not the straight filename).
38
  bool readSchemaFile(const drizzled::SchemaIdentifier &schema_identifier, drizzled::message::Schema &schema);
1309.1.3 by Brian Aker
Cache for Schema.
39
40
  void prime();
41
1966.2.1 by Brian Aker
Clean up style for shared_ptr for messages around table/schema.
42
  typedef boost::unordered_map<std::string, drizzled::message::schema::shared_ptr> SchemaCache;
1309.1.3 by Brian Aker
Cache for Schema.
43
  SchemaCache schema_cache;
44
  bool schema_cache_filled;
45
1755.2.6 by Brian Aker
Remove usage of non-boost lock type.
46
  boost::shared_mutex mutex;
1273.19.27 by Brian Aker
Move schema writing code to schema engine plugin.
47
1273.20.1 by Brian Aker
Basic engine with test.
48
public:
49
  Schema();
50
1309.1.3 by Brian Aker
Cache for Schema.
51
  ~Schema();
1273.20.1 by Brian Aker
Basic engine with test.
52
1309.1.30 by Brian Aker
Simplify dropTable() (will add exceptions right now)
53
1869.1.4 by Brian Aker
TableShare is no longer in the house (i.e. we no longer directly have a copy
54
  drizzled::Cursor *create(drizzled::Table &)
1273.20.1 by Brian Aker
Basic engine with test.
55
  {
56
    return NULL;
57
  }
58
1966.2.3 by Brian Aker
Fix another style issue.
59
  void doGetSchemaIdentifiers(drizzled::SchemaIdentifier::vector &set_of_names);
1966.2.1 by Brian Aker
Clean up style for shared_ptr for messages around table/schema.
60
  bool doGetSchemaDefinition(const drizzled::SchemaIdentifier&, drizzled::message::schema::shared_ptr &proto);
1273.20.1 by Brian Aker
Basic engine with test.
61
1856.2.8 by Joseph Daly
working alter, drop, create schema
62
  bool doCreateSchema(const drizzled::message::Schema &schema_message);
1273.19.25 by Brian Aker
createSchema() now works via SE interface.
63
1273.19.26 by Brian Aker
Move Alter schema to SE interface.
64
  bool doAlterSchema(const drizzled::message::Schema &schema_message);
65
1642 by Brian Aker
This adds const to SchemaIdentifier.
66
  bool doDropSchema(const drizzled::SchemaIdentifier&);
1273.19.31 by Brian Aker
Fix dropSchema().
67
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
68
  // Below are table methods that we don't implement (and don't need)
69
70
  int doGetTableDefinition(drizzled::Session&,
1618.1.1 by Brian Aker
Modify TableIdentifier to be const
71
                           const drizzled::TableIdentifier&,
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
72
                           drizzled::message::Table&)
73
  {
74
    return ENOENT;
75
  }
76
1618.1.1 by Brian Aker
Modify TableIdentifier to be const
77
  bool doDoesTableExist(drizzled::Session&, const drizzled::TableIdentifier&)
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
78
  {
79
    return false;
80
  }
81
1618.1.1 by Brian Aker
Modify TableIdentifier to be const
82
  int doRenameTable(drizzled::Session&, const drizzled::TableIdentifier&, const drizzled::TableIdentifier&)
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
83
  {
2068.7.3 by Brian Aker
Merge in work for error messages being standardized by error_t
84
    return drizzled::HA_ERR_NO_SUCH_TABLE;
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
85
  }
86
1413 by Brian Aker
doCreateTable() was still taking a pointer instead of a session reference.
87
  int doCreateTable(drizzled::Session&,
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
88
                    drizzled::Table&,
1618.1.1 by Brian Aker
Modify TableIdentifier to be const
89
                    const drizzled::TableIdentifier&,
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
90
                    drizzled::message::Table&)
91
  {
2068.7.1 by Brian Aker
First pass through error correction in SE interface for drop table.
92
    return drizzled::ER_TABLE_PERMISSION_DENIED;
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
93
  }
94
1618.1.1 by Brian Aker
Modify TableIdentifier to be const
95
  int doDropTable(drizzled::Session&, const drizzled::TableIdentifier&)
1412 by Brian Aker
Innodb is now in the house (aka... it handls its own DFE).
96
  {
2068.7.3 by Brian Aker
Merge in work for error messages being standardized by error_t
97
    return drizzled::HA_ERR_NO_SUCH_TABLE;
1389 by Brian Aker
Large reord in ALTER TABLE for RENAME.
98
  }
99
1273.20.1 by Brian Aker
Basic engine with test.
100
  const char **bas_ext() const 
101
  {
102
    return schema_exts;
103
  }
1429.1.3 by Brian Aker
Merge in work for fetching a list of table identifiers.
104
1377.7.2 by Stewart Smith
make get_auto_increment pure virtual and force engines not supporting auto_increment to be explicit about it
105
  void get_auto_increment(uint64_t, uint64_t,
106
                          uint64_t,
107
                          uint64_t *,
108
                          uint64_t *)
109
  {}
2068.7.1 by Brian Aker
First pass through error correction in SE interface for drop table.
110
1429.1.3 by Brian Aker
Merge in work for fetching a list of table identifiers.
111
  void doGetTableIdentifiers(drizzled::CachedDirectory &directory,
1642 by Brian Aker
This adds const to SchemaIdentifier.
112
                             const drizzled::SchemaIdentifier &schema_identifier,
1966.2.4 by Brian Aker
Style cleanup.
113
                             drizzled::TableIdentifier::vector &set_of_identifiers);
1273.20.1 by Brian Aker
Basic engine with test.
114
};
115
116
#endif /* PLUGIN_SCHEMA_ENGINE_SCHEMA_H */