void gMySQLBackend::reconnect()
{
- setDB(new SMySQL(getArg("dbname"),
- getArg("host"),
- getArgAsNum("port"),
- getArg("socket"),
- getArg("user"),
- getArg("password"),
- getArg("group"),
- mustDo("innodb-read-committed"),
- getArgAsNum("timeout"),
- mustDo("thread-cleanup"),
- mustDo("ssl")));
+ setDB(std::unique_ptr<SSql>(new SMySQL(getArg("dbname"),
+ getArg("host"),
+ getArgAsNum("port"),
+ getArg("socket"),
+ getArg("user"),
+ getArg("password"),
+ getArg("group"),
+ mustDo("innodb-read-committed"),
+ getArgAsNum("timeout"),
+ mustDo("thread-cleanup"),
+ mustDo("ssl"))));
allocateStatements();
}
GSQLBackend(mode, suffix)
{
try {
- setDB(new SODBC(getArg("datasource"), getArg("username"), getArg("password")));
+ setDB(std::unique_ptr<SSql>(new SODBC(getArg("datasource"), getArg("username"), getArg("password"))));
}
catch (SSqlException& e) {
g_log << Logger::Error << mode << " Connection failed: " << e.txtReason() << std::endl;
GSQLBackend(mode, suffix)
{
try {
- setDB(new SPgSQL(getArg("dbname"),
- getArg("host"),
- getArg("port"),
- getArg("user"),
- getArg("password"),
- getArg("extra-connection-parameters"),
- mustDo("prepared-statements")));
+ setDB(std::unique_ptr<SSql>(new SPgSQL(getArg("dbname"),
+ getArg("host"),
+ getArg("port"),
+ getArg("user"),
+ getArg("password"),
+ getArg("extra-connection-parameters"),
+ mustDo("prepared-statements"))));
}
catch (SSqlException& e) {
GSQLBackend(mode, suffix)
{
try {
- SSQLite3* ptr = new SSQLite3(getArg("database"), getArg("pragma-journal-mode"));
- setDB(ptr);
- allocateStatements();
+ auto ptr = std::unique_ptr<SSql>(new SSQLite3(getArg("database"), getArg("pragma-journal-mode")));
if (!getArg("pragma-synchronous").empty()) {
ptr->execute("PRAGMA synchronous=" + getArg("pragma-synchronous"));
}
if (mustDo("pragma-foreign-keys")) {
ptr->execute("PRAGMA foreign_keys = 1");
}
+ setDB(std::move(ptr));
+ allocateStatements();
}
catch (SSqlException& e) {
g_log << Logger::Error << mode << ": connection failed: " << e.txtReason() << std::endl;
d_db.reset();
}
- void setDB(SSql *db)
+ void setDB(std::unique_ptr<SSql>&& database)
{
freeStatements();
- d_db=std::unique_ptr<SSql>(db);
+ d_db = std::move(database);
if (d_db) {
d_db->setLog(::arg().mustDo("query-logging"));
}