Switching to linux for development of pglab.
Switched from qmake to cmake. Code changes to make it compile.
This commit is contained in:
parent
dd9906dbd8
commit
04723a289b
142 changed files with 124 additions and 83 deletions
114
pglab/PgsqlDatabaseCatalogue.cpp
Normal file
114
pglab/PgsqlDatabaseCatalogue.cpp
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#include "PgsqlDatabaseCatalogue.h"
|
||||
#include "PgTypeContainer.h"
|
||||
#include "PgDatabaseContainer.h"
|
||||
#include "PgAuthIdContainer.h"
|
||||
#include "PgsqlConn.h"
|
||||
|
||||
|
||||
QString getRoleNameFromOid(const PgsqlDatabaseCatalogue *cat, Oid oid)
|
||||
{
|
||||
QString name;
|
||||
const PgAuthIdContainer *auth_ids = cat->authIds();
|
||||
if (auth_ids) {
|
||||
const PgAuthId& auth_id = auth_ids->getByOid(oid);
|
||||
if (auth_id.valid()) {
|
||||
name = auth_id.name;
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
PgsqlDatabaseCatalogue::PgsqlDatabaseCatalogue()
|
||||
{
|
||||
}
|
||||
|
||||
PgsqlDatabaseCatalogue::~PgsqlDatabaseCatalogue()
|
||||
{
|
||||
delete m_types;
|
||||
}
|
||||
|
||||
void PgsqlDatabaseCatalogue::loadAll(Pgsql::Connection &conn)
|
||||
{
|
||||
loadTypes(conn);
|
||||
loadDatabases(conn);
|
||||
loadAuthIds(conn);
|
||||
}
|
||||
|
||||
void PgsqlDatabaseCatalogue::loadInfo(Pgsql::Connection &conn)
|
||||
{
|
||||
Pgsql::Result r = conn.query("SHOW server_version_num");
|
||||
if (r && r.resultStatus() == PGRES_TUPLES_OK)
|
||||
if (r.rows() == 1)
|
||||
m_serverVersion << r.get(0, 0);
|
||||
|
||||
r = conn.query("SELECT version()");
|
||||
if (r && r.resultStatus() == PGRES_TUPLES_OK)
|
||||
if (r.rows() == 1)
|
||||
m_serverVersionString = r.get(0, 0).asQString();
|
||||
}
|
||||
|
||||
void PgsqlDatabaseCatalogue::loadTypes(Pgsql::Connection &conn)
|
||||
{
|
||||
if (m_types == nullptr)
|
||||
m_types = new PgTypeContainer(this);
|
||||
|
||||
std::string q = m_types->getLoadQuery();
|
||||
Pgsql::Result result = conn.query(q.c_str());
|
||||
if (result && result.resultStatus() == PGRES_TUPLES_OK)
|
||||
m_types->load(result);
|
||||
else
|
||||
throw std::runtime_error("Query failed");
|
||||
|
||||
}
|
||||
|
||||
void PgsqlDatabaseCatalogue::loadDatabases(Pgsql::Connection &conn)
|
||||
{
|
||||
if (m_databases == nullptr)
|
||||
m_databases = new PgDatabaseContainer(this);
|
||||
|
||||
|
||||
std::string q = m_databases->getLoadQuery();
|
||||
Pgsql::Result result = conn.query(q.c_str());
|
||||
if (result && result.resultStatus() == PGRES_TUPLES_OK)
|
||||
m_databases->load(result);
|
||||
else
|
||||
throw std::runtime_error("Query failed");
|
||||
}
|
||||
|
||||
void PgsqlDatabaseCatalogue::loadAuthIds(Pgsql::Connection &conn)
|
||||
{
|
||||
if (m_authIds == nullptr)
|
||||
m_authIds = new PgAuthIdContainer(this);
|
||||
|
||||
std::string q = m_authIds->getLoadQuery();
|
||||
Pgsql::Result result = conn.query(q.c_str());
|
||||
if (result && result.resultStatus() == PGRES_TUPLES_OK)
|
||||
m_authIds->load(result);
|
||||
else
|
||||
throw std::runtime_error("Query failed");
|
||||
}
|
||||
|
||||
const QString& PgsqlDatabaseCatalogue::serverVersionString() const
|
||||
{
|
||||
return m_serverVersionString;
|
||||
}
|
||||
|
||||
int PgsqlDatabaseCatalogue::serverVersion() const
|
||||
{
|
||||
return m_serverVersion;
|
||||
}
|
||||
|
||||
const PgTypeContainer* PgsqlDatabaseCatalogue::types() const
|
||||
{
|
||||
return m_types;
|
||||
}
|
||||
|
||||
const PgDatabaseContainer *PgsqlDatabaseCatalogue::databases() const
|
||||
{
|
||||
return m_databases;
|
||||
}
|
||||
|
||||
const PgAuthIdContainer *PgsqlDatabaseCatalogue::authIds() const
|
||||
{
|
||||
return m_authIds;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue