From d38f2ad213e875d40556116cba3230064eacb861 Mon Sep 17 00:00:00 2001 From: Daniel Vassdal Date: Mon, 2 Mar 2015 03:06:55 +0100 Subject: SQL: Add HasColumn() to check if a result contains a named column. --- src/modules/extra/m_pgsql.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/modules/extra/m_pgsql.cpp') diff --git a/src/modules/extra/m_pgsql.cpp b/src/modules/extra/m_pgsql.cpp index 25ce6c7f1..8beea1265 100644 --- a/src/modules/extra/m_pgsql.cpp +++ b/src/modules/extra/m_pgsql.cpp @@ -87,6 +87,16 @@ class PgSQLresult : public SQL::Result PGresult* res; int currentrow; int rows; + std::vector colnames; + + void getColNames() + { + colnames.resize(PQnfields(res)); + for(unsigned int i=0; i < colnames.size(); i++) + { + colnames[i] = PQfname(res, i); + } + } public: PgSQLresult(PGresult* result) : res(result), currentrow(0) { @@ -107,11 +117,25 @@ class PgSQLresult : public SQL::Result void GetCols(std::vector& result) CXX11_OVERRIDE { - result.resize(PQnfields(res)); - for(unsigned int i=0; i < result.size(); i++) + if (colnames.empty()) + getColNames(); + result = colnames; + } + + bool HasColumn(const std::string& column, size_t& index) + { + if (colnames.empty()) + getColNames(); + + for (size_t i = 0; i < colnames.size(); ++i) { - result[i] = PQfname(res, i); + if (colnames[i] == column) + { + index = i; + return true; + } } + return false; } SQL::Field GetValue(int row, int column) -- cgit v1.3.1-10-gc9f91