Add tests for loading the catalog

This commit is contained in:
eelke 2026-10-18 12:32:16 +02:00
parent 591573b6b8
commit a1ac545086
13 changed files with 203 additions and 32 deletions

View file

@ -205,26 +205,9 @@ void DatabasesTableModel::StartLoadDatabaseSizes(std::map<Oid, int> oidIndex)
DatabasesTableModel::DatabaseSizes DatabasesTableModel::QueryDatabaseSizes()
{
std::string q =
"SELECT pg_database.oid, "
" case when has_database_privilege(current_role, pg_database.oid, \n"
" 'connect') then pg_database_size(pg_database.oid) else -1 end \n"
"FROM pg_database";
Pgsql::Connection connection;
connection.connect(openDatabase->config().connectionString());
Pgsql::Result sizesResult = connection.query(q.c_str());
DatabaseSizes result;
result.reserve(sizesResult.rows());
for (auto& row : sizesResult)
{
DatabaseSize ds;
ds.oid = row.get(0);
ds.totalBytes = row.get(1);
result.push_back(ds);
}
return result;
return loadDatabaseSizes(connection);
}
void DatabasesTableModel::PopulateSizes(std::map<Oid, int> oidIndex, DatabaseSizes sizes)

View file

@ -3,6 +3,7 @@
#include "BaseTableModel.h"
#include "catalog/PgDatabase.h"
#include "catalog/PgDatabaseSizes.h"
#include <memory>
class OpenDatabase;
@ -45,17 +46,8 @@ public:
protected:
virtual QVariant getDataMeaning(const QModelIndex &index) const override;
private:
class DatabaseSize {
public:
Oid oid;
int64_t totalBytes;
DatabaseSize()
: oid(InvalidOid)
, totalBytes(-1)
{}
};
using DatabaseSizes = std::vector<DatabaseSize>;
using DatabaseSize = PgDatabaseSize;
using DatabaseSizes = PgDatabaseSizes;
class Database {
public: