2017-12-12 20:13:53 +01:00
|
|
|
|
#include "PgContainer.h"
|
2018-11-18 19:30:45 +01:00
|
|
|
|
#include "PgDatabaseCatalog.h"
|
2018-12-28 08:51:02 +01:00
|
|
|
|
#include "Pgsql_Connection.h"
|
2017-12-12 20:13:53 +01:00
|
|
|
|
|
2018-11-18 19:30:45 +01:00
|
|
|
|
IPgContainer::IPgContainer(PgDatabaseCatalog& cat)
|
|
|
|
|
|
: m_catalog(cat)
|
|
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
bool IPgContainer::minimumVersion(int required_version) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_catalog.serverVersion() >= required_version;
|
|
|
|
|
|
}
|
2018-12-28 08:51:02 +01:00
|
|
|
|
|
|
|
|
|
|
bool IPgContainer::lessThenVersion(int required_version) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_catalog.serverVersion() < required_version;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void IPgContainer::loadAll(Pgsql::Connection &conn)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string q = getLoadQuery();
|
|
|
|
|
|
Pgsql::Result result = conn.query(q.c_str());
|
|
|
|
|
|
if (result && result.resultStatus() == PGRES_TUPLES_OK) {
|
|
|
|
|
|
load(result);
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
auto details = result.diagDetails();
|
|
|
|
|
|
if (details.state == "42501") { // permission denied
|
|
|
|
|
|
// ignore this for now
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
throw std::runtime_error("Query failed\n" + details.errorMessage);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|