Guido Wimmel created SYNCOPE-667: ------------------------------------ Summary: simplification of admin roles filter query used in search Key: SYNCOPE-667 URL: https://issues.apache.org/jira/browse/SYNCOPE-667 Project: Syncope Issue Type: Improvement Affects Versions: 1.2.4 Reporter: Guido Wimmel Assignee: Guido Wimmel Priority: Minor
As discussed on the dev mailing list [1], I think the query generated in SubjectSearchDAOImpl.getAdminRolesFilter() to determine the users which have roles not in adminRoles can be simplified for type==SubjectType.USER. Currently generated query: (for type==USER and adminRoles={1,2}): {code} SELECT syncopeUser_id AS subject_id FROM Membership M1 WHERE syncopeRole_id IN (SELECT syncopeRole_id FROM Membership M2 WHERE M2.syncopeUser_id=M1.syncopeUser_id AND syncopeRole_id NOT IN (SELECT id AS syncopeRole_id FROM SyncopeRole WHERE id=1 OR id=2) ) {code} Suggested simplification: {code} SELECT syncopeUser_id AS subject_id FROM Membership M2 WHERE syncopeRole_id NOT IN ( SELECT id AS syncopeRole_id FROM SyncopeRole WHERE id=1 OR id=2 ) {code} In addition, the test coverage of the admin roles filter mechanism used in search should be improved. [1] http://syncope-dev.1063484.n5.nabble.com/getAdminRolesFilter-query-td5716932.html -- This message was sent by Atlassian JIRA (v6.3.4#6332)