[Fedora-directory-commits] ldapserver/ldap/servers/slapd/back-ldbm proto-back-ldbm.h, 1.16, 1.17 dblayer.c, 1.32, 1.33 dbverify.c, 1.3, 1.4

Noriko Hosoi nhosoi at fedoraproject.org
Wed Nov 19 02:52:45 UTC 2008


Author: nhosoi

Update of /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv10528

Modified Files:
	proto-back-ldbm.h dblayer.c dbverify.c 
Log Message:
Resolves: #471998
Summary: dbverify: support integer type index
Description: 
1) changed dblayer_bt_compare to public (proto-back-ldbm.h, dblayer.c)
2) set dblayer_bt_compare by dbp->set_bt_compare if the attribute has a
comparison function set in ai->ai_key_cmp_fn (dbverify.c)
3) cleaned up the function dbverify_ext; set the right page size based upon the
idl type (new idl or old idl), also set dup compare function only when the idl
type is new. (dbverify.c)



Index: proto-back-ldbm.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/proto-back-ldbm.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- proto-back-ldbm.h	24 Oct 2008 23:28:22 -0000	1.16
+++ proto-back-ldbm.h	19 Nov 2008 02:52:41 -0000	1.17
@@ -170,6 +170,8 @@
 int dblayer_db_uses_transactions(DB_ENV *db_env);
 int dblayer_db_uses_mpool(DB_ENV *db_env);
 int dblayer_db_uses_logging(DB_ENV *db_env);
+int dblayer_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2);
+
 
 /*
  * dn2entry.c


Index: dblayer.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/dblayer.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- dblayer.c	17 Oct 2008 17:13:55 -0000	1.32
+++ dblayer.c	19 Nov 2008 02:52:42 -0000	1.33
@@ -243,7 +243,7 @@
 
    see also DBTcmp
 */
-static int
+int
 dblayer_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
 {
     struct berval bv1, bv2;


Index: dbverify.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/dbverify.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dbverify.c	8 Oct 2008 17:29:03 -0000	1.3
+++ dbverify.c	19 Nov 2008 02:52:42 -0000	1.4
@@ -111,25 +111,67 @@
                         "Unable to create id2entry db file %d\n", rval);
             return rval;
         }
+
 #define VLVPREFIX "vlv#"
-        if ((0 != strncmp(direntry->name, ID2ENTRY, strlen(ID2ENTRY))) &&
-            (0 != strncmp(direntry->name, VLVPREFIX, strlen(VLVPREFIX))))
+        if (0 != strncmp(direntry->name, ID2ENTRY, strlen(ID2ENTRY)))
         {
-            rval = dbp->set_flags(dbp, DB_DUP | DB_DUPSORT);
-            if (0 != rval)
+            struct attrinfo *ai = NULL;
+            char *p = NULL;
+            p = strstr(filep, LDBM_FILENAME_SUFFIX); /* since already checked,
+                                                        it must have it */
+            *p = '\0';
+            ainfo_get( inst->inst_be, filep+1, &ai );
+            *p = '.';
+            if (ai->ai_key_cmp_fn) {
+                dbp->app_private = (void *)ai->ai_key_cmp_fn;
+                dbp->set_bt_compare(dbp, dblayer_bt_compare);
+            }
+            if (idl_get_idl_new())
+            {
+                rval = dbp->set_pagesize(dbp,
+                        (priv->dblayer_index_page_size == 0) ?
+                        DBLAYER_INDEX_PAGESIZE : priv->dblayer_index_page_size);
+            }
+            else
             {
-                slapi_log_error(SLAPI_LOG_FATAL, "DB verify",
-                       "Unable to set DUP flags to db %d\n", rval);
-                return rval;
+                rval = dbp->set_pagesize(dbp,
+                        (priv->dblayer_page_size == 0) ?
+                        DBLAYER_PAGESIZE : priv->dblayer_page_size);
             }
-
-            rval = dbp->set_dup_compare(dbp, idl_new_compare_dups);
             if (0 != rval)
             {
                 slapi_log_error(SLAPI_LOG_FATAL, "DB verify",
-                       "Unable to set dup_compare to db %d\n", rval);
+                         "Unable to set pagesize flags to db (%d)\n", rval);
                 return rval;
             }
+            if (0 == strncmp(direntry->name, VLVPREFIX, strlen(VLVPREFIX)))
+            {
+                rval = dbp->set_flags(dbp, DB_RECNUM);
+                if (0 != rval)
+                {
+                    slapi_log_error(SLAPI_LOG_FATAL, "DB verify",
+                         "Unable to set RECNUM flag to vlv index (%d)\n", rval);
+                    return rval;
+                }
+            }
+            else if (idl_get_idl_new())
+            {
+                rval = dbp->set_flags(dbp, DB_DUP | DB_DUPSORT);
+                if (0 != rval)
+                {
+                    slapi_log_error(SLAPI_LOG_FATAL, "DB verify",
+                           "Unable to set DUP flags to db (%d)\n", rval);
+                    return rval;
+                }
+    
+                rval = dbp->set_dup_compare(dbp, idl_new_compare_dups);
+                if (0 != rval)
+                {
+                    slapi_log_error(SLAPI_LOG_FATAL, "DB verify",
+                           "Unable to set dup_compare to db (%d)\n", rval);
+                    return rval;
+                }
+            }
         }
 #undef VLVPREFIX
         rval = dbp->verify(dbp, dbdir, NULL, NULL, 0);




More information about the Fedora-directory-commits mailing list