diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
index bb598da906a923217c7a5cd75e39d824ff169458..e8fc23ba88d36c93d1c422acd6b447cef6515bb1 100644
--- a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
@@ -78,6 +78,7 @@
+
{
private final boolean members;
MembersCache(boolean members) {
@@ -292,6 +295,45 @@ public class PostgreRole implements PostgreObject, PostgrePrivilegeOwner, DBPPer
return this;
}
+ @Override
+ public void setObjectDefinitionText(String sourceText) throws DBException {
+
+ }
+
+ @Override
+ public String getObjectDefinitionText(DBRProgressMonitor monitor, Map options) throws DBException {
+ final String lineBreak = System.getProperty(StandardConstants.ENV_LINE_SEPARATOR);
+ StringBuilder ddl = new StringBuilder();
+ ddl.append("-- DROP ROLE ").append(getName()).append(";\n\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ ddl.append("CREATE ROLE ").append(getName()).append(" WITH ");
+ addOptionToDDL(ddl, isSuperUser(), "SUPERUSER");
+ addOptionToDDL(ddl, isCreateDatabase(), "CREATEDB");
+ addOptionToDDL(ddl, isCreateRole(), "CREATEROLE");
+ addOptionToDDL(ddl, isInherit(), "INHERIT");
+ addOptionToDDL(ddl, isCanLogin(), "LOGIN");
+ addOptionToDDL(ddl, isReplication(), "REPLICATION");
+ addOptionToDDL(ddl, isBypassRls(), "BYPASSRLS");
+ if (getConnLimit() > 0) {
+ ddl.append(lineBreak);
+ ddl.append("\tCONNECTION LIMIT ").append(getClass());
+ }
+ if (getValidUntil() != null) {
+ ddl.append(lineBreak);
+ ddl.append("\tVALID UNTIL '").append(getValidUntil().toString()).append("'");
+ }
+ ddl.append(";");
+ return ddl.toString();
+ }
+
+ private void addOptionToDDL(StringBuilder ddl, boolean isOptionOn, String option) {
+ ddl.append(lineBreak).append("\t");
+ if (isOptionOn) {
+ ddl.append(option);
+ } else {
+ ddl.append("NO").append(option);
+ }
+ }
+
@Override
public List getPrivileges(DBRProgressMonitor monitor, boolean includeNestedObjects) {
try (JDBCSession session = DBUtils.openMetaSession(monitor, this, "Read role privileges")) {