浏览代码

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!)
Mark Reynolds 12 年之前
父节点
当前提交
a5dde495a7
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      ldap/servers/plugins/referint/referint.c

+ 6 - 1
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];