]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_pgsql.cpp
Improve the logic around connecting to a MySQL server.
[user/henk/code/inspircd.git] / src / modules / extra / m_pgsql.cpp
index 220168b84d719234c32aedf2d6ba805afb4f0f6a..b0f0b4597eba45367a256e7d7801158ebd0eb3cf 100644 (file)
@@ -24,6 +24,7 @@
 /// $CompilerFlags: -Iexecute("pg_config --includedir" "POSTGRESQL_INCLUDE_DIR")
 /// $LinkerFlags: -Lexecute("pg_config --libdir" "POSTGRESQL_LIBRARY_DIR") -lpq
 
+/// $PackageInfo: require_system("arch") postgresql-libs
 /// $PackageInfo: require_system("centos") postgresql-devel
 /// $PackageInfo: require_system("darwin") postgresql
 /// $PackageInfo: require_system("debian") libpq-dev
@@ -102,7 +103,7 @@ class PgSQLresult : public SQL::Result
        {
                rows = PQntuples(res);
                if (!rows)
-                       rows = atoi(PQcmdTuples(res));
+                       rows = ConvToNum<int>(PQcmdTuples(res));
        }
 
        ~PgSQLresult()
@@ -122,7 +123,7 @@ class PgSQLresult : public SQL::Result
                result = colnames;
        }
 
-       bool HasColumn(const std::string& column, size_t& index)
+       bool HasColumn(const std::string& column, size_t& index) CXX11_OVERRIDE
        {
                if (colnames.empty())
                        getColNames();
@@ -175,7 +176,11 @@ class SQLConn : public SQL::Provider, public EventHandler
        QueueItem               qinprog;        /* If there is currently a query in progress */
 
        SQLConn(Module* Creator, ConfigTag* tag)
-       : SQL::Provider(Creator, "SQL/" + tag->getString("id")), conf(tag), sql(NULL), status(CWRITE), qinprog(NULL, "")
+               : SQL::Provider(Creator, tag->getString("id"))
+               , conf(tag)
+               , sql(NULL)
+               , status(CWRITE)
+               , qinprog(NULL, "")
        {
                if (!DoConnect())
                {
@@ -298,6 +303,7 @@ class SQLConn : public SQL::Provider, public EventHandler
                                SocketEngine::ChangeEventMask(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
                                status = WWRITE;
                                DoConnectedPoll();
+                               return true;
                        default:
                                return true;
                }
@@ -391,6 +397,7 @@ restart:
                                SocketEngine::ChangeEventMask(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
                                status = WWRITE;
                                DoConnectedPoll();
+                               return true;
                        default:
                                return true;
                }
@@ -416,6 +423,7 @@ restart:
 
        void Submit(SQL::Query *req, const std::string& q) CXX11_OVERRIDE
        {
+               ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Executing PostgreSQL query: " + q);
                if (qinprog.q.empty())
                {
                        DoQuery(QueueItem(req,q));
@@ -546,7 +554,7 @@ class ModulePgSQL : public Module
                ConfigTagList tags = ServerInstance->Config->ConfTags("database");
                for(ConfigIter i = tags.first; i != tags.second; i++)
                {
-                       if (!stdalgo::string::equalsci(i->second->getString("provider"), "pgsql"))
+                       if (!stdalgo::string::equalsci(i->second->getString("module"), "pgsql"))
                                continue;
                        std::string id = i->second->getString("id");
                        ConnMap::iterator curr = connections.find(id);