From c37e9eccb842f8eade164f49444f49428ea35535 Mon Sep 17 00:00:00 2001 From: eelke Date: Tue, 19 Dec 2017 18:17:41 +0100 Subject: [PATCH] Better error reporting of problems during catalog load. --- pglab/MainWindow.cpp | 32 +++++++++++++++++++------------- pglab/PgDatabaseCatalog.cpp | 7 +++++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/pglab/MainWindow.cpp b/pglab/MainWindow.cpp index 35a707e..0911c8e 100644 --- a/pglab/MainWindow.cpp +++ b/pglab/MainWindow.cpp @@ -55,20 +55,26 @@ QueryTab *MainWindow::GetActiveQueryTab() void MainWindow::setConfig(const ConnectionConfig &config) { m_config = config; - auto res = OpenDatabase::createOpenDatabase(config); - if (res.valid()) { - m_database = res.get(); + try { + auto res = OpenDatabase::createOpenDatabase(config); + if (res.valid()) { + m_database = res.get(); + } + QString title = "pglab - "; + title += m_config.name().c_str(); + setWindowTitle(title); + + auto tt = new TablesPage(this); + tt->setCatalog(m_database->catalogue()); + ui->tabWidget->addTab(tt, "Tables"); + ui->tabWidget->setCurrentWidget(tt); + + newSqlPage(); + } catch (std::runtime_error &ex) { + QMessageBox msgBox; + msgBox.setText(QString::fromUtf8(ex.what())); + msgBox.exec(); } - QString title = "pglab - "; - title += m_config.name().c_str(); - setWindowTitle(title); - - auto tt = new TablesPage(this); - tt->setCatalog(m_database->catalogue()); - ui->tabWidget->addTab(tt, "Tables"); - ui->tabWidget->setCurrentWidget(tt); - - newSqlPage(); } void MainWindow::on_actionLoad_SQL_triggered() diff --git a/pglab/PgDatabaseCatalog.cpp b/pglab/PgDatabaseCatalog.cpp index 52706cf..d640b96 100644 --- a/pglab/PgDatabaseCatalog.cpp +++ b/pglab/PgDatabaseCatalog.cpp @@ -109,8 +109,11 @@ void load(Pgsql::Connection &conn, IPgContainter &pg_cont) Pgsql::Result result = conn.query(q.c_str()); if (result && result.resultStatus() == PGRES_TUPLES_OK) pg_cont.load(result); - else - throw std::runtime_error("Query failed"); + else { + auto details = result.diagDetails(); + + throw std::runtime_error("Query failed\n" + details.errorMessage); + } }