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

#3589 PG: owner permissions parse fix

上级 4dc91ac1
......@@ -455,8 +455,31 @@ public class PostgreUtils {
driver.getDriverParameter(PostgreConstants.PROP_GREENPLUM_DRIVER));
}
public static List<PostgrePermission> extractPermissionsFromACL(@NotNull PostgrePermissionsOwner owner, @Nullable Object acl) {
public static List<PostgrePermission> extractPermissionsFromACL(DBRProgressMonitor monitor, @NotNull PostgrePermissionsOwner owner, @Nullable Object acl) throws DBException {
if (!(acl instanceof java.sql.Array)) {
if (acl == null) {
// Special case. Means ALL permissions are granted to table owner
PostgreRole objectOwner = owner.getOwner(monitor);
String granteeName = objectOwner == null ? null : objectOwner.getName();
List<PostgrePrivilege> privileges = new ArrayList<>();
for (PostgrePrivilegeType pt : PostgrePrivilegeType.values()) {
if (pt.supportsType(owner.getClass())) {
privileges.add(
new PostgrePrivilege(
granteeName,
granteeName,
owner.getDatabase().getName(),
owner.getSchema().getName(),
owner.getName(),
pt,
false,
false));
}
}
PostgreObjectPermission permission = new PostgreObjectPermission(owner, objectOwner == null ? null : objectOwner.getName(), privileges);
return Collections.singletonList(permission);
}
return Collections.emptyList();
}
Object itemArray;
......
......@@ -35,7 +35,7 @@ public enum PostgrePrivilegeType {
EXECUTE('X', true, PostgreProcedure.class),
UNKNOWN((char)0, false, Object.class);
UNKNOWN((char)0, false);
private final Class<?>[] targetType;
private final char code;
......
......@@ -454,7 +454,7 @@ public class PostgreProcedure extends AbstractProcedure<PostgreDataSource, Postg
@Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException {
return PostgreUtils.extractPermissionsFromACL(this, acl);
return PostgreUtils.extractPermissionsFromACL(monitor,this, acl);
}
@Override
......
......@@ -193,7 +193,7 @@ public abstract class PostgreTableBase extends JDBCTable<PostgreDataSource, Post
@Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException {
List<PostgrePermission> tablePermissions = PostgreUtils.extractPermissionsFromACL(this, acl);
List<PostgrePermission> tablePermissions = PostgreUtils.extractPermissionsFromACL(monitor, this, acl);
if (!includeNestedObjects) {
return tablePermissions;
}
......
......@@ -48,7 +48,7 @@ public class PostgreTableColumn extends PostgreAttribute<PostgreTableBase> imple
@Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException {
return PostgreUtils.extractPermissionsFromACL(this, getAcl());
return PostgreUtils.extractPermissionsFromACL(monitor, this, getAcl());
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册