diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-10-02 21:25:12 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-10-02 21:25:12 +0100 |
commit | c9382a9c89ce03f1fcde3fadd294a3938b894e47 (patch) | |
tree | 7e5de1834f121b44f2485132741a6b3fe8431129 /project2/sql | |
parent | Compat fix (diff) | |
parent | Big tidy up of loggers and logger factories (diff) | |
download | project2-c9382a9c89ce03f1fcde3fadd294a3938b894e47.tar.bz2 project2-c9382a9c89ce03f1fcde3fadd294a3938b894e47.tar.xz project2-c9382a9c89ce03f1fcde3fadd294a3938b894e47.zip |
Merge branch 'project2-adhoc-plugins'
Diffstat (limited to 'project2/sql')
-rw-r--r-- | project2/sql/pch.hpp | 28 | ||||
-rw-r--r-- | project2/sql/rdbmsDataSource.cpp | 6 | ||||
-rw-r--r-- | project2/sql/rdbmsDataSource.h | 2 | ||||
-rw-r--r-- | project2/sql/sqlBulkLoad.cpp | 5 | ||||
-rw-r--r-- | project2/sql/sqlCache.cpp | 6 | ||||
-rw-r--r-- | project2/sql/sqlMergeTask.cpp | 12 | ||||
-rw-r--r-- | project2/sql/sqlRows.cpp | 2 | ||||
-rw-r--r-- | project2/sql/sqlTask.cpp | 10 | ||||
-rw-r--r-- | project2/sql/sqlTask.h | 7 | ||||
-rw-r--r-- | project2/sql/sqlTest.cpp | 2 |
10 files changed, 31 insertions, 49 deletions
diff --git a/project2/sql/pch.hpp b/project2/sql/pch.hpp index e3dcda2..857eb5b 100644 --- a/project2/sql/pch.hpp +++ b/project2/sql/pch.hpp @@ -2,31 +2,11 @@ #ifndef SQL_PCH #define SQL_PCH -#include "cache.h" -#include "column.h" -#include "columns.h" -#include "command.h" -#include "commonObjects.h" -#include "exceptions.h" -#include "iHaveParameters.h" -#include "logger.h" -#include "modifycommand.h" -#include "rdbmsDataSource.h" -#include "rowProcessor.h" -#include "rowSet.h" -#include "selectcommand.h" -#include "sqlHandleAsVariableType.h" -#include "sqlVariableBinder.h" -#include "sqlWriter.h" -#include "variables.h" -#include "scriptLoader.h" -#include "scripts.h" -#include <boost/bind.hpp> -#include "options.h" -#include <buffer.h> -#include <column.h> -#include <errno.h> #include <stdexcept> +#include <string> +#include <glibmm/ustring.h> +#include <boost/variant/variant_fwd.hpp> +#include <connection.h> #endif #endif diff --git a/project2/sql/rdbmsDataSource.cpp b/project2/sql/rdbmsDataSource.cpp index e1091a3..46e97a8 100644 --- a/project2/sql/rdbmsDataSource.cpp +++ b/project2/sql/rdbmsDataSource.cpp @@ -7,8 +7,8 @@ #define LOCK(l) std::lock_guard<std::mutex> _lock##l(l) -/// Specialized ElementLoader for instances of RdbmsDataSource; handles persistent DB connections -class RdbmsDataSourceLoader : public ElementLoader::For<RdbmsDataSource> { +/// Life cycle component for handling closure of persistent DB connections +class RdbmsDataSourceFactory : public LifeCycle { public: void onIdle() override { @@ -32,7 +32,7 @@ class RdbmsDataSourceLoader : public ElementLoader::For<RdbmsDataSource> { RdbmsDataSource::changedDSNs.clear(); } }; -DECLARE_CUSTOM_LOADER("rdbmsdatasource", RdbmsDataSourceLoader); +NAMEDFACTORY("rdbmsdatasource", RdbmsDataSource, DataSourceFactory); RdbmsDataSource::DBHosts RdbmsDataSource::dbhosts; RdbmsDataSource::FailedHosts RdbmsDataSource::failedhosts; diff --git a/project2/sql/rdbmsDataSource.h b/project2/sql/rdbmsDataSource.h index 4b7763f..979cec6 100644 --- a/project2/sql/rdbmsDataSource.h +++ b/project2/sql/rdbmsDataSource.h @@ -94,7 +94,7 @@ class RdbmsDataSource : public DataSource { typedef std::set<ChangedDSN> ChangedDSNs; static ChangedDSNs changedDSNs; - friend class RdbmsDataSourceLoader; + friend class RdbmsDataSourceFactory; }; #endif diff --git a/project2/sql/sqlBulkLoad.cpp b/project2/sql/sqlBulkLoad.cpp index d976997..4f17837 100644 --- a/project2/sql/sqlBulkLoad.cpp +++ b/project2/sql/sqlBulkLoad.cpp @@ -15,7 +15,7 @@ class SqlBulkLoad : public Task { extras(p, "extras"), db(NULL) { - p->script->loader.addLoadTarget(p, Storer::into<ElementLoader>(&stream)); + p->script->loader.addLoadTarget(p, Storer::into<StreamFactory>(&stream)); } void loadComplete(const CommonObjects * co) @@ -41,4 +41,5 @@ class SqlBulkLoad : public Task { const RdbmsDataSource * db; }; -DECLARE_LOADER("sqlbulkload", SqlBulkLoad); +NAMEDFACTORY("sqlbulkload", SqlBulkLoad, TaskFactory); + diff --git a/project2/sql/sqlCache.cpp b/project2/sql/sqlCache.cpp index cf33f8e..d20a8fc 100644 --- a/project2/sql/sqlCache.cpp +++ b/project2/sql/sqlCache.cpp @@ -253,7 +253,7 @@ class SqlCache : public RowSetCache { INITOPTIONS; private: - friend class CustomSqlCacheLoader; + friend class CustomSqlCacheFactory; const RdbmsDataSource * db; static std::string DataSource; static std::string HeaderTable; @@ -264,7 +264,7 @@ std::string SqlCache::DataSource; std::string SqlCache::HeaderTable; time_t SqlCache::CacheLife; -class CustomSqlCacheLoader : public ElementLoader::For<SqlCache> { +class CustomSqlCacheFactory : public RowSetCacheFactory::For<SqlCache>, public LifeCycle { public: void onIdle() override { @@ -284,7 +284,7 @@ class CustomSqlCacheLoader : public ElementLoader::For<SqlCache> { } } }; -DECLARE_CUSTOM_LOADER("sqlcache", CustomSqlCacheLoader); +NAMEDPLUGIN("sqlcache", CustomSqlCacheFactory, RowSetCacheFactory); DECLARE_OPTIONS(SqlCache, "SQL Cache options") ("cache.sql.dataSource", Options::value(&DataSource), diff --git a/project2/sql/sqlMergeTask.cpp b/project2/sql/sqlMergeTask.cpp index b6c504f..6e2e002 100644 --- a/project2/sql/sqlMergeTask.cpp +++ b/project2/sql/sqlMergeTask.cpp @@ -40,13 +40,13 @@ class SqlMergeInsert : IHaveParameters, public Task { DB::ModifyCommand * insert; }; -DECLARE_LOADER("sqlmerge", SqlMergeTask); -DECLARE_LOADER("sqlmergeinsert", SqlMergeInsert); +NAMEDFACTORY("sqlmerge", SqlMergeTask, TaskFactory); +NAMEDFACTORY("sqlmergeinsert", SqlMergeInsert, TaskFactory); // Conversion logic SqlMergeTask::SqlMergeTask(const std::string & datasource, const std::string & target) : SourceObject(__PRETTY_FUNCTION__), - Task(NULL), + Task(__PRETTY_FUNCTION__), insteadOfDelete(NULL), updateWhere(NULL), patchOrder(NULL), @@ -85,7 +85,7 @@ SqlMergeTask::SqlMergeTask(ScriptNodePtr p) : dtable(p->value("targettable", NULL).as<std::string>()), dtablet(stringf("tmp_%s_%d", dtable.c_str(), getpid())) { - p->script->loader.addLoadTarget(p, Storer::into<ElementLoader>(&sources)); + p->script->loader.addLoadTarget(p, Storer::into<TaskFactory>(&sources)); if (!sources.empty() && useView(NULL)) { throw NotSupported("useview not supported with iterate fillers"); @@ -265,11 +265,11 @@ SqlMergeTask::insertCommand() const return destdb->newModifyCommand(ins); } -class Populate : public NoOutputExecute { +class Populate : public Task { public: Populate(DB::ModifyCommand * c) : SourceObject(__FUNCTION__), - NoOutputExecute(__FUNCTION__), + Task(__FUNCTION__), cmd(c) { } diff --git a/project2/sql/sqlRows.cpp b/project2/sql/sqlRows.cpp index f8a16e1..b6e40cc 100644 --- a/project2/sql/sqlRows.cpp +++ b/project2/sql/sqlRows.cpp @@ -10,7 +10,7 @@ #include "commonObjects.h" #include <boost/date_time/gregorian/gregorian_types.hpp> -DECLARE_LOADER("sqlrows", SqlRows); +NAMEDFACTORY("sqlrows", SqlRows, RowSetFactory); SqlRows::SqlRows(ScriptNodePtr p) : RowSet(p), diff --git a/project2/sql/sqlTask.cpp b/project2/sql/sqlTask.cpp index a98748f..78c6d81 100644 --- a/project2/sql/sqlTask.cpp +++ b/project2/sql/sqlTask.cpp @@ -6,7 +6,7 @@ #include "commonObjects.h" #include "sqlVariableBinder.h" -DECLARE_LOADER("sqltask", SqlTask); +NAMEDFACTORY("sqltask", SqlTask, TaskFactory); StaticMessageException(RunOnNotSpecified, "runon attribute must be specified"); SqlTask::SqlTask(ScriptNodePtr p) : @@ -17,8 +17,8 @@ SqlTask::SqlTask(ScriptNodePtr p) : sqlCommand(p->child("sql")), db(NULL) { - p->script->loader.addLoadTargetSub(p, "changes", false, Storer::into<ElementLoader>(&changesNOEs)); - p->script->loader.addLoadTargetSub(p, "nochanges", false, Storer::into<ElementLoader>(&noChangesNOEs)); + p->script->loader.addLoadTargetSub(p, "changes", false, Storer::into<TaskFactory>(&changesTasks)); + p->script->loader.addLoadTargetSub(p, "nochanges", false, Storer::into<TaskFactory>(&noChangesTasks)); } SqlTask::~SqlTask() @@ -40,12 +40,12 @@ SqlTask::execute(ExecContext * ec) const unsigned int offset = 0; sqlCommand.bindParams(ec, modify.get(), offset); if (modify->execute() == 0) { - for (const SubNOEs::value_type & sq : noChangesNOEs) { + for (const auto & sq : noChangesTasks) { sq->execute(ec); } } else { - for (const SubNOEs::value_type & sq : changesNOEs) { + for (const auto & sq : changesTasks) { sq->execute(ec); } } diff --git a/project2/sql/sqlTask.h b/project2/sql/sqlTask.h index 94901a9..20f7415 100644 --- a/project2/sql/sqlTask.h +++ b/project2/sql/sqlTask.h @@ -6,6 +6,7 @@ #include "task.h" #include "variables.h" #include "sqlWriter.h" +#include <scriptStorage.h> namespace DB { class ModifyCommand; } class RdbmsDataSource; @@ -21,9 +22,9 @@ class SqlTask : public Task { const Variable dataSource; const Variable filter; - typedef ANONORDEREDSTORAGEOF(NoOutputExecute) SubNOEs; - SubNOEs changesNOEs; - SubNOEs noChangesNOEs; + typedef ANONORDEREDSTORAGEOF(Task) SubTasks; + SubTasks changesTasks; + SubTasks noChangesTasks; protected: const DynamicSql::SqlCommand sqlCommand; diff --git a/project2/sql/sqlTest.cpp b/project2/sql/sqlTest.cpp index fedc2a0..f3a5516 100644 --- a/project2/sql/sqlTest.cpp +++ b/project2/sql/sqlTest.cpp @@ -8,7 +8,7 @@ #include "sqlVariableBinder.h" #include <boost/date_time/posix_time/posix_time.hpp> -DECLARE_LOADER("sqltest", SqlTest); +NAMEDFACTORY("sqltest", SqlTest, TestFactory); class CantCompareNulls : public std::exception { }; |