diff --git a/src/main/java/edu/harvard/iq/dataverse/PermissionServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/PermissionServiceBean.java index cf4aae57174..9947cc33775 100644 --- a/src/main/java/edu/harvard/iq/dataverse/PermissionServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/PermissionServiceBean.java @@ -106,7 +106,7 @@ public class PermissionServiceBean { ")\n" + "\n" + "SELECT * FROM DATAVERSE WHERE id IN (\n" + - " SELECT definitionpoint_id \n" + + " SELECT definitionpoint_id\n" + " FROM roleassignment\n" + " WHERE roleassignment.assigneeidentifier IN (\n" + " SELECT CONCAT('&explicit/', explicitgroup.groupalias) as assignee\n" + @@ -114,29 +114,25 @@ public class PermissionServiceBean { " WHERE explicitgroup.id IN (\n" + " (\n" + " SELECT explicitgroup.id id\n" + - " FROM explicitgroup \n" + - " WHERE explicitgroup.id IN (SELECT id FROM grouplist)\n" + + " FROM explicitgroup\n" + + " WHERE EXISTS (SELECT id FROM grouplist WHERE id = explicitgroup.id)\n" + " ) UNION (\n" + " SELECT explicitgroup_explicitgroup.containedexplicitgroups_id id\n" + " FROM explicitgroup_explicitgroup\n" + - " WHERE explicitgroup_explicitgroup.explicitgroup_id IN (SELECT id FROM grouplist)\n" + - " AND \n" + - " (SELECT count(*)\n" + - " FROM dataverserole\n" + - " WHERE dataverserole.id = roleassignment.role_id and (dataverserole.permissionbits & @PERMISSIONBIT !=0)) > 0\n" + + " WHERE EXISTS (SELECT id FROM grouplist WHERE id = explicitgroup_explicitgroup.explicitgroup_id)\n" + + " AND EXISTS (SELECT id FROM dataverserole\n" + + " WHERE dataverserole.id = roleassignment.role_id and (dataverserole.permissionbits & @PERMISSIONBIT !=0))\n" + " )\n" + " )\n" + " ) UNION (\n" + - " SELECT definitionpoint_id \n" + + " SELECT definitionpoint_id\n" + " FROM roleassignment\n" + " WHERE roleassignment.assigneeidentifier = (\n" + " SELECT CONCAT('@', authenticateduser.useridentifier)\n" + - " FROM authenticateduser \n" + + " FROM authenticateduser\n" + " WHERE authenticateduser.id = @USERID)\n" + - " AND \n" + - " (SELECT count(*)\n" + - " FROM dataverserole\n" + - " WHERE dataverserole.id = roleassignment.role_id and (dataverserole.permissionbits & @PERMISSIONBIT !=0)) > 0\n" + + " AND EXISTS (SELECT id FROM dataverserole\n" + + " WHERE dataverserole.id = roleassignment.role_id and (dataverserole.permissionbits & @PERMISSIONBIT !=0))\n" + " )\n" + ")"; /**