[Date Prev][Date Next] [Chronological] [Thread] [Top]

Questions about RDN attribute



Hello,

It is my understanding that the type of the RDN of an entry is not
stored in the
current entry structure, which is:

typedef struct entry {
     char  *e_dn;  /* DN of this entry     */
     char  *e_ndn;  /* normalized DN of this entry   */
     Attribute *e_attrs; /* list of attributes + values    */

    ID  e_id;  /* id of this entry - this should */
     /* really be private to back-ldbm */
     char  e_state; /* for the cache    */

    pthread_rdwr_t e_rdwr; /* reader/writer lock             */

    #define ENTRY_STATE_DELETED 1
    #define ENTRY_STATE_CREATING 2
    int  e_refcnt; /* # threads ref'ing this entry   */
    struct entry *e_lrunext; /* for cache lru list    */
    struct entry *e_lruprev;
} Entry;

This is OK for most operations, but modrdn (moddn).  If the rdn value
has to be
removed from an entry upon deleteoldrdn request, there is no way to do
so correctly
in the current version. Although we could search all attributes for the
oldrdn value
other attributes could have this value, and an implementation of modrdn
based on this
type of search will be incorrect.

The obvious solution here will be to maintain the rdn type on the entry,
but this requires
modifications in multiple places....any suggestions/clarifications?.

                                                                Thanks,
Juan