~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/storage_engine.cc

  • Committer: Olaf van der Spek
  • Date: 2011-05-06 12:32:18 UTC
  • mto: This revision was merged to the branch mainline in revision 2303.
  • Revision ID: olafvdspek@gmail.com-20110506123218-nk4hr38zrkdv17nq
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
194
194
  @note
195
195
    don't bother to rollback here, it's done already
196
196
*/
197
 
void StorageEngine::closeConnection(Session* session)
 
197
void StorageEngine::closeConnection(Session& session)
198
198
{
199
199
  BOOST_FOREACH(EngineVector::reference it, g_engines)
200
200
  {
201
 
    if (*session->getEngineData(it))
202
 
      it->close_connection(session);
 
201
    if (*session.getEngineData(it))
 
202
      it->close_connection(&session);
203
203
  }
204
204
}
205
205
 
206
206
bool StorageEngine::flushLogs(StorageEngine *engine)
207
207
{
208
 
  if (engine == NULL)
209
 
  {
210
 
    if (std::find_if(g_engines.begin(), g_engines.end(),
211
 
                     std::mem_fun(&StorageEngine::flush_logs))
212
 
        != g_engines.begin())
213
 
      return true;
214
 
  }
215
 
  else
216
 
  {
217
 
    if (engine->flush_logs())
218
 
      return true;
219
 
  }
 
208
  if (not engine)
 
209
  {
 
210
    if (std::find_if(g_engines.begin(), g_engines.end(), std::mem_fun(&StorageEngine::flush_logs))
 
211
        != g_engines.begin()) // Shouldn't this be .end()?
 
212
      return true;
 
213
  }
 
214
  else if (engine->flush_logs())
 
215
    return true;
220
216
  return false;
221
217
}
222
218
 
377
373
                              const identifier::Table &identifier)
378
374
{
379
375
  drizzled::error_t error;
380
 
 
381
 
  if (not dropTable(session, identifier, error))
382
 
  {
383
 
    return false;
384
 
  }
385
 
 
386
 
  return true;
 
376
  return dropTable(session, identifier, error);
387
377
}
388
378
 
389
379
bool StorageEngine::dropTable(Session& session,
409
399
      error= ER_EVENT_OBSERVER_PLUGIN;
410
400
    }
411
401
  }
412
 
 
413
402
  drizzled::message::Cache::singleton().erase(identifier);
414
 
 
415
 
  if (error)
416
 
  {
417
 
    return false;
418
 
  }
419
 
 
420
 
  return true;
 
403
  return not error;
421
404
}
422
405
 
423
406
 
485
468
  return create(arg);
486
469
}
487
470
 
488
 
class AddTableIdentifier : 
489
 
  public std::unary_function<StorageEngine *, void>
490
 
{
491
 
  CachedDirectory &directory;
492
 
  const identifier::Schema &identifier;
493
 
  identifier::table::vector &set_of_identifiers;
494
 
 
495
 
public:
496
 
 
497
 
  AddTableIdentifier(CachedDirectory &directory_arg, const identifier::Schema &identifier_arg, identifier::table::vector &of_names) :
498
 
    directory(directory_arg),
499
 
    identifier(identifier_arg),
500
 
    set_of_identifiers(of_names)
501
 
  {
502
 
  }
503
 
 
504
 
  result_type operator() (argument_type engine)
505
 
  {
506
 
    engine->doGetTableIdentifiers(directory, identifier, set_of_identifiers);
507
 
  }
508
 
};
509
 
 
510
 
 
511
471
void StorageEngine::getIdentifiers(Session &session, const identifier::Schema &schema_identifier, identifier::table::vector &set_of_identifiers)
512
472
{
513
473
  CachedDirectory directory(schema_identifier.getPath(), set_of_table_definition_ext);
528
488
    return;
529
489
  }
530
490
 
531
 
  std::for_each(g_engines.begin(), g_engines.end(),
532
 
                AddTableIdentifier(directory, schema_identifier, set_of_identifiers));
 
491
  BOOST_FOREACH(EngineVector::reference it, g_engines)
 
492
    it->doGetTableIdentifiers(directory, schema_identifier, set_of_identifiers);
533
493
 
534
494
  session.open_tables.doGetTableIdentifiers(directory, schema_identifier, set_of_identifiers);
535
495
}