diff --git a/pglablib/catalog/PgClass.cpp b/pglablib/catalog/PgClass.cpp index ed7f71b..5dec586 100644 --- a/pglablib/catalog/PgClass.cpp +++ b/pglablib/catalog/PgClass.cpp @@ -127,7 +127,8 @@ QString PgClass::createTableSql() const { first = false; } - else sql += ",\n "; + else + sql += ",\n "; if (!col.islocal) sql += "-- "; sql += col.columnDefinition(catalog()); } @@ -143,37 +144,49 @@ QString PgClass::createTableSql() const sql += "\n "; first = false; } - else sql += ",\n "; + else + sql += ",\n "; sql += getConstraintDefinition(catalog(), constraint, " "); } - sql += "\n)"; - { - // [ INHERITS ( parent_table [, ... ] ) ] - auto parents = catalog().inherits()->getParentsOf(oid()); - if (!parents.empty()) + sql += "\n)" + % generateInheritsSql() + // [ PARTITION BY { RANGE | LIST } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ] + // [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] + // [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] + % generateTablespaceSql() + % ";\n"; + return sql; +} + +QString PgClass::generateInheritsSql() const +{ + QString sql; + // [ INHERITS ( parent_table [, ... ] ) ] + auto parents = catalog().inherits()->getParentsOf(oid()); + if (!parents.empty()) + { + sql += "\nINHERITS ("; + bool first = true; + for (auto parent_oid : parents) { - sql += "\nINHERITS ("; - bool first = true; - for (auto parent_oid : parents) - { - if (first) first = false; - else sql += ", "; - sql += catalog().classes()->getByKey(parent_oid)->fullyQualifiedQuotedObjectName(); - } - sql += ")"; - } - } -// [ PARTITION BY { RANGE | LIST } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ] -// [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] -// [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] + if (first) first = false; + else sql += ", "; + sql += catalog().classes()->getByKey(parent_oid)->fullyQualifiedQuotedObjectName(); + } + sql += ")"; + } + return sql; +} + +QString PgClass::generateTablespaceSql() const +{ if (tablespace != 0) { auto ns = getTablespaceDisplayString(catalog(), tablespace); - sql += "\n TABLESPACE " % quoteIdent(ns); + return "\n TABLESPACE " % quoteIdent(ns); } - sql += ";\n"; - return sql; + return {}; } QString PgClass::createViewSql() const @@ -192,3 +205,4 @@ QString PgClass::createViewSql() const return sql; } + diff --git a/pglablib/catalog/PgClass.h b/pglablib/catalog/PgClass.h index 0121a28..4e53a93 100644 --- a/pglablib/catalog/PgClass.h +++ b/pglablib/catalog/PgClass.h @@ -59,6 +59,8 @@ private: mutable QString createSqlCache; QString createTableSql() const; + QString generateInheritsSql() const; + QString generateTablespaceSql() const; QString createViewSql() const; };