From 45795333f24c14e7821b69aae89c48ba2c0e7fc2 Mon Sep 17 00:00:00 2001 From: eelke Date: Fri, 2 Jul 2021 20:42:32 +0200 Subject: [PATCH] Generate COMMENT IS statements for columns --- pglab/ColumnPage.cpp | 11 ++++++++--- pglablib/catalog/PgAttribute.cpp | 7 +++++++ pglablib/catalog/PgAttribute.h | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pglab/ColumnPage.cpp b/pglab/ColumnPage.cpp index ee2f481..6fb0f47 100644 --- a/pglab/ColumnPage.cpp +++ b/pglab/ColumnPage.cpp @@ -73,11 +73,16 @@ void ColumnPage::tableView_selectionChanged(const QItemSelection &/*selected*/, drops += ";"; addsql += ";"; m_definitionView->setPlainText(drops % "\n\n" % addsql); - completeSql += drops % "\n\n" % addsql; + completeSql += drops % "\n\n" % addsql % "\n\n"; } - else { - m_definitionView->setPlainText(""); + for (auto r : rijen) { + auto && col = m_columnModel->column(r); + auto cs = col.commentStatement(*m_catalog, m_Class.value()); + if (!cs.isEmpty()) { + completeSql += cs % "\n"; + } } + completeSql += "\n-- SQL to correct just the defaults\n"; for (auto r : rijen) { auto && col = m_columnModel->column(r); diff --git a/pglablib/catalog/PgAttribute.cpp b/pglablib/catalog/PgAttribute.cpp index 471f847..a43834e 100644 --- a/pglablib/catalog/PgAttribute.cpp +++ b/pglablib/catalog/PgAttribute.cpp @@ -63,4 +63,11 @@ QString PgAttribute::alterTableDropColumn(const PgDatabaseCatalog &cat, const Pg return sql; } +QString PgAttribute::commentStatement(const PgDatabaseCatalog &cat, const PgClass &table) const +{ + if (description.isEmpty()) + return {}; + return "COMMENT ON COLUMN " % table.fullyQualifiedQuotedObjectName() % "." + % quoteIdent(name) % " IS " % escapeLiteral(description) % ";"; +} diff --git a/pglablib/catalog/PgAttribute.h b/pglablib/catalog/PgAttribute.h index d9e97df..e7958ad 100644 --- a/pglablib/catalog/PgAttribute.h +++ b/pglablib/catalog/PgAttribute.h @@ -42,6 +42,7 @@ public: QString columnDefinition(const PgDatabaseCatalog &cat) const; QString alterTableAddColumn(const PgDatabaseCatalog &cat, const PgClass &table) const; QString alterTableDropColumn(const PgDatabaseCatalog &cat, const PgClass &table) const; + QString commentStatement(const PgDatabaseCatalog &cat, const PgClass &table) const; bool isSerial() const { return !sername.isEmpty(); } };