summaryrefslogtreecommitdiff
path: root/project2/sql
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2015-10-02 21:25:12 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2015-10-02 21:25:12 +0100
commitc9382a9c89ce03f1fcde3fadd294a3938b894e47 (patch)
tree7e5de1834f121b44f2485132741a6b3fe8431129 /project2/sql
parentCompat fix (diff)
parentBig tidy up of loggers and logger factories (diff)
downloadproject2-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.hpp28
-rw-r--r--project2/sql/rdbmsDataSource.cpp6
-rw-r--r--project2/sql/rdbmsDataSource.h2
-rw-r--r--project2/sql/sqlBulkLoad.cpp5
-rw-r--r--project2/sql/sqlCache.cpp6
-rw-r--r--project2/sql/sqlMergeTask.cpp12
-rw-r--r--project2/sql/sqlRows.cpp2
-rw-r--r--project2/sql/sqlTask.cpp10
-rw-r--r--project2/sql/sqlTask.h7
-rw-r--r--project2/sql/sqlTest.cpp2
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 { };