23 #include <drizzled/plugin/transactional_storage_engine.h>
24 #include <drizzled/resource_context.h>
25 #include <drizzled/session.h>
34 static std::vector<TransactionalStorageEngine*> g_engines;
36 TransactionalStorageEngine::TransactionalStorageEngine(
const std::string &name_arg,
37 const std::bitset<HTON_BIT_SIZE> &flags_arg)
38 : StorageEngine(name_arg, flags_arg)
42 void TransactionalStorageEngine::setTransactionReadWrite(Session& session)
44 ResourceContext& resource_context= session.getResourceContext(*
this);
54 if (resource_context.isStarted())
55 resource_context.markModifiedData();
79 it->doReleaseTemporaryLatches(session);
84 if (g_engines.empty())
86 std::vector<int> results;
87 results.reserve(g_engines.size());
89 results.push_back(it->startTransaction(session, options));
90 return *std::max_element(results.begin(), results.end());
95 g_engines.push_back(engine);
96 return StorageEngine::addPlugin(engine);
99 void TransactionalStorageEngine::removePlugin(TransactionalStorageEngine*)
TODO: Rename this file - func.h is stupid.
static void releaseTemporaryLatches(Session *session)
static int notifyStartTransaction(Session *session, start_transaction_option_t options)