@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } GrantInfo grantInfo = (GrantInfo) o; return Objects.equals(privilegeInfo, grantInfo.getPrivilegeInfo()) && Objects.equals(grantee, grantInfo.getIdentity()) && Objects.equals(schemaTableName, grantInfo.getSchemaTableName()) && Objects.equals(grantor, grantInfo.getGrantor()) && Objects.equals(withHierarchy, grantInfo.getWithHierarchy()); } }
public static Set<GrantInfo> listTablePrivileges(Session session, Metadata metadata, AccessControl accessControl, QualifiedTablePrefix prefix) { List<GrantInfo> grants = metadata.listTablePrivileges(session, prefix); Set<SchemaTableName> allowedTables = accessControl.filterTables( session.getRequiredTransactionId(), session.getIdentity(), prefix.getCatalogName(), grants.stream().map(GrantInfo::getSchemaTableName).collect(toImmutableSet())); return grants.stream() .filter(grantInfo -> allowedTables.contains(grantInfo.getSchemaTableName())) .collect(toImmutableSet()); }
private InternalTable buildTablePrivileges(Session session, Set<QualifiedTablePrefix> prefixes) { InternalTable.Builder table = InternalTable.builder(informationSchemaTableColumns(TABLE_TABLE_PRIVILEGES)); for (QualifiedTablePrefix prefix : prefixes) { List<GrantInfo> grants = ImmutableList.copyOf(listTablePrivileges(session, metadata, accessControl, prefix)); for (GrantInfo grant : grants) { for (PrivilegeInfo privilegeInfo : grant.getPrivilegeInfo()) { table.add( grant.getGrantor().orElse(null), grant.getIdentity().getUser(), prefix.getCatalogName(), grant.getSchemaTableName().getSchemaName(), grant.getSchemaTableName().getTableName(), privilegeInfo.getPrivilege().name(), privilegeInfo.isGrantOption(), grant.getWithHierarchy().orElse(null)); } } } return table.build(); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } GrantInfo grantInfo = (GrantInfo) o; return Objects.equals(privilegeInfo, grantInfo.getPrivilegeInfo()) && Objects.equals(grantee, grantInfo.getIdentity()) && Objects.equals(schemaTableName, grantInfo.getSchemaTableName()) && Objects.equals(grantor, grantInfo.getGrantor()) && Objects.equals(withHierarchy, grantInfo.getWithHierarchy()); } }