Generate COMMENT IS statements for columns

This commit is contained in:
eelke 2021-07-02 20:42:32 +02:00
parent 5777a9c834
commit 45795333f2
3 changed files with 16 additions and 3 deletions

View file

@ -73,11 +73,16 @@ void ColumnPage::tableView_selectionChanged(const QItemSelection &/*selected*/,
drops += ";"; drops += ";";
addsql += ";"; addsql += ";";
m_definitionView->setPlainText(drops % "\n\n" % addsql); m_definitionView->setPlainText(drops % "\n\n" % addsql);
completeSql += drops % "\n\n" % addsql; completeSql += drops % "\n\n" % addsql % "\n\n";
} }
else { for (auto r : rijen) {
m_definitionView->setPlainText(""); 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"; completeSql += "\n-- SQL to correct just the defaults\n";
for (auto r : rijen) { for (auto r : rijen) {
auto && col = m_columnModel->column(r); auto && col = m_columnModel->column(r);

View file

@ -63,4 +63,11 @@ QString PgAttribute::alterTableDropColumn(const PgDatabaseCatalog &cat, const Pg
return sql; 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) % ";";
}

View file

@ -42,6 +42,7 @@ public:
QString columnDefinition(const PgDatabaseCatalog &cat) const; QString columnDefinition(const PgDatabaseCatalog &cat) const;
QString alterTableAddColumn(const PgDatabaseCatalog &cat, const PgClass &table) const; QString alterTableAddColumn(const PgDatabaseCatalog &cat, const PgClass &table) const;
QString alterTableDropColumn(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(); } bool isSerial() const { return !sername.isEmpty(); }
}; };