提交 0c23f71b 编写于 作者: S serge-rider

PostgreSQL sequence and extension DDL

上级 f491c61b
......@@ -345,11 +345,13 @@
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure"/>
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex"/>
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintBase"/>
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"/>
</editor>
<editor id="postgresql.source.ddl" class="org.jkiss.dbeaver.ext.postgresql.ui.editors.PostgreSourceViewEditor"
label="%db.editor.ddl.name" description="%db.editor.ddl.description" icon="#sql_text" position="additions_middle"
contributor="org.jkiss.dbeaver.ui.editors.sql.SQLEditorContributorNested" type="folder">
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreTable"/>
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence"/>
</editor>
</extension>
......
......@@ -36,7 +36,7 @@ public class PostgreCommandGrantPrivilege extends DBECommandAbstract<PostgrePerm
private PostgrePermission permission;
private PostgrePrivilegeType[] privilege;
public PostgreCommandGrantPrivilege(PostgrePermissionsOwner user, boolean grant, PostgrePermission permission, PostgrePrivilegeType ... privilege)
public PostgreCommandGrantPrivilege(PostgrePermissionsOwner user, boolean grant, PostgrePermission permission, PostgrePrivilegeType[] privilege)
{
super(user, grant ? PostgreMessages.edit_command_grant_privilege_action_grant_privilege : PostgreMessages.edit_command_grant_privilege_action_revoke_privilege);
this.grant = grant;
......
......@@ -105,26 +105,30 @@ public abstract class PostgreTableManagerBase extends SQLTableManager<PostgreTab
}
}
if (CommonUtils.getOption(options, PostgreConstants.OPTION_DDL_SHOW_PERMISSIONS)) {
// Permissions
Collection<PostgrePermission> permissions = table.getPermissions(monitor);
if (!CommonUtils.isEmpty(permissions)) {
actions.add(new SQLDatabasePersistActionComment(table.getDataSource(), "Permissions"));
for (PostgrePermission permission : permissions) {
if (permission.hasAllPrivileges(table)) {
Collections.addAll(actions,
new PostgreCommandGrantPrivilege(permission.getOwner(), true, permission, PostgrePrivilegeType.ALL)
.getPersistActions(options));
} else {
PostgreCommandGrantPrivilege grant = new PostgreCommandGrantPrivilege(permission.getOwner(), true, permission, permission.getPrivileges());
Collections.addAll(actions, grant.getPersistActions(options));
}
}
}
}
getTableGrantPermissionActions(monitor, table, actions, options);
} catch (DBException e) {
log.error(e);
}
}
}
public static void getTableGrantPermissionActions(DBRProgressMonitor monitor, PostgreTableBase table, List<DBEPersistAction> actions, Map<String, Object> options) throws DBException {
if (CommonUtils.getOption(options, PostgreConstants.OPTION_DDL_SHOW_PERMISSIONS)) {
// Permissions
Collection<PostgrePermission> permissions = table.getPermissions(monitor);
if (!CommonUtils.isEmpty(permissions)) {
actions.add(new SQLDatabasePersistActionComment(table.getDataSource(), "Permissions"));
for (PostgrePermission permission : permissions) {
if (permission.hasAllPrivileges(table)) {
Collections.addAll(actions,
new PostgreCommandGrantPrivilege(permission.getOwner(), true, permission, PostgrePrivilegeType.ALL)
.getPersistActions(options));
} else {
PostgreCommandGrantPrivilege grant = new PostgreCommandGrantPrivilege(permission.getOwner(), true, permission, permission.getPrivileges());
Collections.addAll(actions, grant.getPersistActions(options));
}
}
}
}
}
}
......@@ -18,17 +18,22 @@ package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPScriptObject;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
/**
* PostgreExtension
*/
public class PostgreExtension implements PostgreObject {
public class PostgreExtension implements PostgreObject, DBPScriptObject {
private PostgreSchema schema;
private long oid;
......@@ -104,4 +109,13 @@ public class PostgreExtension implements PostgreObject {
return schema.getDatabase();
}
@Override
public String getObjectDefinitionText(DBRProgressMonitor monitor, Map<String, Object> options) throws DBException {
return
"-- Extension: " + getName() + "\n\n" +
"-- DROP EXTENSION " + getName() + ";\n\n" +
"CREATE EXTENSION " + getName() + "\n\t" +
"SCHEMA " + DBUtils.getQuotedIdentifier(getSchema()) + "\n\t" +
"VERSION " + version;
}
}
......@@ -19,9 +19,11 @@ package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.postgresql.edit.PostgreTableManagerBase;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBPQualifiedObject;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.edit.DBEPersistAction;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
......@@ -32,11 +34,14 @@ import org.jkiss.dbeaver.model.meta.LazyProperty;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.meta.PropertyGroup;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.struct.DBSEntityType;
import org.jkiss.dbeaver.model.struct.rdb.DBSSequence;
import org.jkiss.dbeaver.model.struct.rdb.DBSTableIndex;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
......@@ -193,22 +198,28 @@ public class PostgreSequence extends PostgreTableBase implements DBSSequence, DB
sql.append("-- DROP SEQUENCE ").append(getFullyQualifiedName(DBPEvaluationContext.DDL)).append(";\n\n");
sql.append("CREATE SEQUENCE ").append(getFullyQualifiedName(DBPEvaluationContext.DDL));
if (info.getIncrementBy() != null && info.getIncrementBy().longValue() > 0) {
sql.append("\nINCREMENT BY ").append(info.getIncrementBy());
sql.append("\n\tINCREMENT BY ").append(info.getIncrementBy());
}
if (info.getMinValue() != null && info.getMinValue().longValue() > 0) {
sql.append("\nMINVALUE ").append(info.getMinValue());
sql.append("\n\tMINVALUE ").append(info.getMinValue());
} else {
sql.append("\nNO MINVALUE");
sql.append("\n\tNO MINVALUE");
}
if (info.getMaxValue() != null && info.getMaxValue().longValue() > 0) {
sql.append("\nMAXVALUE ").append(info.getMaxValue());
sql.append("\n\tMAXVALUE ").append(info.getMaxValue());
} else {
sql.append("\nNO MAXVALUE");
sql.append("\n\tNO MAXVALUE");
}
if (info.getLastValue() != null && info.getLastValue().longValue() > 0) {
sql.append("\nSTART ").append(info.getLastValue());
sql.append("\n\tSTART ").append(info.getLastValue());
}
List<DBEPersistAction> actions = new ArrayList<>();
PostgreTableManagerBase.getTableGrantPermissionActions(monitor, this, actions, options);
if (!actions.isEmpty()) {
sql.append("\n\n");
sql.append(SQLUtils.generateScript(getDataSource(), actions.toArray(new DBEPersistAction[actions.size()]), false));
}
return sql.toString();
}
......
......@@ -44,7 +44,6 @@ import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.ext.postgresql.edit.PostgreCommandGrantPrivilege;
import org.jkiss.dbeaver.ext.postgresql.model.*;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBPUniqueObject;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.edit.DBECommandReflector;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder;
......@@ -290,7 +289,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
getDatabaseObject(),
grant,
permission,
privilegeType),
privilegeType == null ? null : new PostgrePrivilegeType[] { privilegeType }),
new DBECommandReflector<PostgrePermissionsOwner, PostgreCommandGrantPrivilege>() {
@Override
public void redoCommand(PostgreCommandGrantPrivilege cmd)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册