~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/schema_engine.cc

  • Committer: Brian Aker
  • Date: 2010-12-02 01:39:53 UTC
  • mto: This revision was merged to the branch mainline in revision 1968.
  • Revision ID: brian@tangent.org-20101202013953-9ie7kafjag0e051q
Style cleanup.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
#include "drizzled/global_charset_info.h"
25
25
#include "drizzled/charset.h"
26
 
#include "drizzled/transaction_services.h"
27
26
 
28
27
#include "drizzled/plugin/storage_engine.h"
29
28
#include "drizzled/plugin/authorization.h"
30
29
 
 
30
using namespace std;
 
31
 
31
32
namespace drizzled
32
33
{
33
34
 
35
36
{
36
37
 
37
38
class AddSchemaNames : 
38
 
  public std::unary_function<StorageEngine *, void>
 
39
  public unary_function<StorageEngine *, void>
39
40
{
40
41
  SchemaIdentifier::vector &schemas;
41
42
 
55
56
void StorageEngine::getIdentifiers(Session &session, SchemaIdentifier::vector &schemas)
56
57
{
57
58
  // Add hook here for engines to register schema.
58
 
  std::for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
 
59
  for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
59
60
           AddSchemaNames(schemas));
60
61
 
61
 
  plugin::Authorization::pruneSchemaNames(session.user(), schemas);
 
62
  plugin::Authorization::pruneSchemaNames(session.getSecurityContext(), schemas);
62
63
}
63
64
 
64
 
class StorageEngineGetSchemaDefinition: public std::unary_function<StorageEngine *, bool>
 
65
class StorageEngineGetSchemaDefinition: public unary_function<StorageEngine *, bool>
65
66
{
66
67
  const SchemaIdentifier &identifier;
67
68
  message::schema::shared_ptr &schema_proto;
91
92
bool StorageEngine::getSchemaDefinition(const SchemaIdentifier &identifier, message::schema::shared_ptr &proto)
92
93
{
93
94
  EngineVector::iterator iter=
94
 
    std::find_if(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
95
 
                 StorageEngineGetSchemaDefinition(identifier, proto));
 
95
    find_if(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
 
96
            StorageEngineGetSchemaDefinition(identifier, proto));
96
97
 
97
98
  if (iter != StorageEngine::getSchemaEngines().end())
98
99
  {
119
120
 
120
121
  if (found && schmema_proto->has_collation())
121
122
  {
122
 
    const std::string buffer= schmema_proto->collation();
 
123
    const string buffer= schmema_proto->collation();
123
124
    const CHARSET_INFO* cs= get_charset_by_name(buffer.c_str());
124
125
 
125
126
    if (not cs)
141
142
}
142
143
 
143
144
class CreateSchema : 
144
 
  public std::unary_function<StorageEngine *, void>
 
145
  public unary_function<StorageEngine *, void>
145
146
{
146
147
  const drizzled::message::Schema &schema_message;
147
148
 
155
156
  result_type operator() (argument_type engine)
156
157
  {
157
158
    // @todo eomeday check that at least one engine said "true"
158
 
    bool success= engine->doCreateSchema(schema_message);
159
 
 
160
 
    if (success) 
161
 
    {
162
 
      TransactionServices &transaction_services= TransactionServices::singleton();
163
 
      transaction_services.allocateNewTransactionId();
164
 
    }
 
159
    (void)engine->doCreateSchema(schema_message);
165
160
  }
166
161
};
167
162
 
168
163
bool StorageEngine::createSchema(const drizzled::message::Schema &schema_message)
169
164
{
170
165
  // Add hook here for engines to register schema.
171
 
  std::for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
172
 
                CreateSchema(schema_message));
 
166
  for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
 
167
           CreateSchema(schema_message));
173
168
 
174
169
  return true;
175
170
}
176
171
 
177
172
class DropSchema : 
178
 
  public std::unary_function<StorageEngine *, void>
 
173
  public unary_function<StorageEngine *, void>
179
174
{
180
175
  uint64_t &success_count;
181
176
  const SchemaIdentifier &identifier;
194
189
    bool success= engine->doDropSchema(identifier);
195
190
 
196
191
    if (success)
197
 
    {
198
192
      success_count++;
199
 
      TransactionServices &transaction_services= TransactionServices::singleton();
200
 
      transaction_services.allocateNewTransactionId();
201
 
    }
202
193
  }
203
194
};
204
195
 
206
197
{
207
198
  uint64_t counter= 0;
208
199
  // Add hook here for engines to register schema.
209
 
  std::for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
210
 
                DropSchema(identifier, counter));
 
200
  for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
 
201
           DropSchema(identifier, counter));
211
202
 
212
203
  return counter ? true : false;
213
204
}
214
205
 
215
206
class AlterSchema : 
216
 
  public std::unary_function<StorageEngine *, void>
 
207
  public unary_function<StorageEngine *, void>
217
208
{
218
209
  uint64_t &success_count;
219
210
  const drizzled::message::Schema &schema_message;
233
224
 
234
225
 
235
226
    if (success)
236
 
    {
237
227
      success_count++;
238
 
      TransactionServices &transaction_services= TransactionServices::singleton();
239
 
      transaction_services.allocateNewTransactionId();
240
 
    }
241
228
  }
242
229
};
243
230
 
245
232
{
246
233
  uint64_t success_count= 0;
247
234
 
248
 
  std::for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
249
 
                AlterSchema(schema_message, success_count));
 
235
  for_each(StorageEngine::getSchemaEngines().begin(), StorageEngine::getSchemaEngines().end(),
 
236
           AlterSchema(schema_message, success_count));
250
237
 
251
238
  return success_count ? true : false;
252
239
}