~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/storage_engine.cc

Merge Monty -> cppcheck changes, plus change to deleteTable

Show diffs side-by-side

added added

removed removed

Lines of Context:
637
637
  session.doGetTableIdentifiers(directory, schema_identifier, set_of_identifiers);
638
638
}
639
639
 
 
640
class DropTable: public unary_function<TableIdentifier&, bool>
 
641
{
 
642
  Session &session;
 
643
  StorageEngine *engine;
 
644
 
 
645
public:
 
646
 
 
647
  DropTable(Session &session_arg, StorageEngine *engine_arg) :
 
648
    session(session_arg),
 
649
    engine(engine_arg)
 
650
  { }
 
651
 
 
652
  result_type operator() (argument_type identifier)
 
653
  {
 
654
    return engine->doDropTable(session, identifier) == 0;
 
655
  } 
 
656
};
 
657
 
640
658
/* This will later be converted to TableIdentifiers */
641
659
class DropTables: public unary_function<StorageEngine *, void>
642
660
{
652
670
 
653
671
  result_type operator() (argument_type engine)
654
672
  {
655
 
    for (TableIdentifierList::iterator iter= table_identifiers.begin();
656
 
         iter != table_identifiers.end();
657
 
         iter++)
658
 
    {
659
 
      int error= engine->doDropTable(session, const_cast<TableIdentifier&>(*iter));
660
 
 
661
 
      // On a return of zero we know we found and deleted the table. So we
662
 
      // remove it from our search.
663
 
      if (not error)
664
 
        table_identifiers.erase(iter);
665
 
    }
 
673
    // True returning from DropTable means the table has been successfully
 
674
    // deleted, so it should be removed from the list of tables to drop
 
675
    table_identifiers.erase(remove_if(table_identifiers.begin(),
 
676
                                      table_identifiers.end(),
 
677
                                      DropTable(session, engine)),
 
678
                            table_identifiers.end());
666
679
  }
667
680
};
668
681