ldap/servers/plugins/referint/referint.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
New commits:
commit a5dde495a7df7b19fd71cccdb0eb1b91d1f73b58
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Jul 31 12:21:19 2013 -0400
Ticket 47411 - Replace substring search with plain search in referint plugin
Bug Description: RI plugin uses a substring search by default, which is much more
expensive than an equality search filter.
Fix Description: Only use the substring search if the operation is a modrdn.
https://fedorahosted.org/389/ticket/47411
Reveiwed by: richm(Thanks!)
diff --git a/ldap/servers/plugins/referint/referint.c
b/ldap/servers/plugins/referint/referint.c
index d31f53c..3d5bba8 100644
--- a/ldap/servers/plugins/referint/referint.c
+++ b/ldap/servers/plugins/referint/referint.c
@@ -742,7 +742,12 @@ update_integrity(char **argv, Slapi_DN *origSDN,
search_base = slapi_sdn_get_dn( sdn );
for(i = 3; argv[i] != NULL; i++){
- filter = slapi_filter_sprintf("(%s=*%s%s)", argv[i], ESC_NEXT_VAL,
origDN);
+ if(newrDN){
+ /* we need to check the children of the old dn, so use a wildcard */
+ filter = slapi_filter_sprintf("(%s=*%s%s)", argv[i],
ESC_NEXT_VAL, origDN);
+ } else {
+ filter = slapi_filter_sprintf("(%s=%s%s)", argv[i],
ESC_NEXT_VAL, origDN);
+ }
if ( filter ) {
/* Need only the current attribute and its subtypes */
attrs[0] = argv[i];