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

#3589 PG: owner permissions parse fix

上级 4dc91ac1
...@@ -455,8 +455,31 @@ public class PostgreUtils { ...@@ -455,8 +455,31 @@ public class PostgreUtils {
driver.getDriverParameter(PostgreConstants.PROP_GREENPLUM_DRIVER)); 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 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(); return Collections.emptyList();
} }
Object itemArray; Object itemArray;
......
...@@ -35,7 +35,7 @@ public enum PostgrePrivilegeType { ...@@ -35,7 +35,7 @@ public enum PostgrePrivilegeType {
EXECUTE('X', true, PostgreProcedure.class), EXECUTE('X', true, PostgreProcedure.class),
UNKNOWN((char)0, false, Object.class); UNKNOWN((char)0, false);
private final Class<?>[] targetType; private final Class<?>[] targetType;
private final char code; private final char code;
......
...@@ -454,7 +454,7 @@ public class PostgreProcedure extends AbstractProcedure<PostgreDataSource, Postg ...@@ -454,7 +454,7 @@ public class PostgreProcedure extends AbstractProcedure<PostgreDataSource, Postg
@Override @Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException { public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException {
return PostgreUtils.extractPermissionsFromACL(this, acl); return PostgreUtils.extractPermissionsFromACL(monitor,this, acl);
} }
@Override @Override
......
...@@ -193,7 +193,7 @@ public abstract class PostgreTableBase extends JDBCTable<PostgreDataSource, Post ...@@ -193,7 +193,7 @@ public abstract class PostgreTableBase extends JDBCTable<PostgreDataSource, Post
@Override @Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException { 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) { if (!includeNestedObjects) {
return tablePermissions; return tablePermissions;
} }
......
...@@ -48,7 +48,7 @@ public class PostgreTableColumn extends PostgreAttribute<PostgreTableBase> imple ...@@ -48,7 +48,7 @@ public class PostgreTableColumn extends PostgreAttribute<PostgreTableBase> imple
@Override @Override
public Collection<PostgrePermission> getPermissions(DBRProgressMonitor monitor, boolean includeNestedObjects) throws DBException { 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.
先完成此消息的编辑!
想要评论请 注册