-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Minor
-
Affects Version/s: 2.6.6
-
Component/s: provisioning
-
None
GrouperProvisioningGrouperDao.retrieveMembers()
sqlInitial = new StringBuilder("select " +
|
" gm.id, " +
|
" gm.subject_source, " +
|
" gm.subject_id, " +
|
" gm.subject_identifier0, " +
|
" gm.name, " +
|
" gm.description, " +
|
" gsm.metadata_json, " +
|
" gm.email0, " +
|
" gm.subject_identifier1, " +
|
" gm.subject_identifier2, " +
|
" gm.id_index, " +
|
" gm.subject_resolution_resolvable " +
|
"from " +
|
" grouper_members gm " +
|
" left join grouper_sync_member gsm on gsm.member_id = gm.id " +
|
"where " +
|
" gm.subject_resolution_deleted='F' " +
|
" and exists ( select 1 from grouper_memberships ms join grouper_group_set gs on ms.owner_id = gs.member_id " +
|
" join grouper_sync_group gsg on gs.owner_group_id = gsg.group_id " +
|
" where ms.member_id = gm.id and gsg.grouper_sync_id = ? " +
|
" and ms.field_id = gs.member_field_id " +
|
" and gsg.provisionable = 'T' " +
|
" and ms.enabled='T' ");
|
This returns entities who are in sync_members for any provisioner, as long as they are provisionable in the target provisioner. Thus it returns multiple records if they are provisioned in another provisioner, and the comparison sees that as needing to insert the duplicates