While trying to understand the whole process that makes back-sql work, the following quote was really useful:
Pierangelo Masarati wrote on Fri, 4 Jun 2004 16:03:39 +0200
I'm talking about 2.2.X (2.2.11 at present).
- slapd uses the structuralObjectClass of the entry to look up the
objectClass mapping according to ldap_oc_mappings;
- it does some sanity checks (I'll discuss these later)
- it checks for the existence of the entry's parent
- it uses the ldap_oc_mappings create_proc to create the objectClass
entry in ldap_entries
- then, for each attribute, the corresponding values are inserted if
possible. I'll discuss later how to decide whether an add should succeed or not if some (required?) attribute mapping is not available; now I really have to go :)
Q1: Is this process still correct and is there more documentation around this process?
Q2: What is the process for editing or remove data?
When I add an OU, the ldap_entry_objclasses shows the oc_name of the OU object to be 'top', while the ldap_entries table shows the oc_map_id to be that of organizationalUnit.
When I now try to edit the name of this object, I get the following error, which I get as well on trying to edit any other object:
Could not rename the entry / Could not perform ldap_modify operation. LDAP said: Object class violation Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION) Description: You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list of ObjectClasses. This can also occur if you do not specify a structural objectClass when creating an entry, or if you specify more than one structural objectClass.
Any clue what that could be?
Marcel
Marcel Berteler wrote:
While trying to understand the whole process that makes back-sql work, the following quote was really useful:
Pierangelo Masarati wrote on Fri, 4 Jun 2004 16:03:39 +0200
I'm talking about 2.2.X (2.2.11 at present).
- slapd uses the structuralObjectClass of the entry to look up the
objectClass mapping according to ldap_oc_mappings;
- it does some sanity checks (I'll discuss these later)
- it checks for the existence of the entry's parent
- it uses the ldap_oc_mappings create_proc to create the objectClass
entry in ldap_entries
- then, for each attribute, the corresponding values are inserted if
possible. I'll discuss later how to decide whether an add should succeed or not if some (required?) attribute mapping is not available; now I really have to go :)
Q1: Is this process still correct and is there more documentation around this process?
Sounds like, as far as I remember. I don't recall any other reliable documentation.
Q2: What is the process for editing or remove data?
When I add an OU, the ldap_entry_objclasses shows the oc_name of the OU object to be 'top', while the ldap_entries table shows the oc_map_id to be that of organizationalUnit.
When I now try to edit the name of this object, I get the following error, which I get as well on trying to edit any other object:
Could not rename the entry / Could not perform ldap_modify operation. LDAP said: Object class violation Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION) Description: You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list of ObjectClasses. This can also occur if you do not specify a structural objectClass when creating an entry, or if you specify more than one structural objectClass.
Any clue what that could be?
Nope. Maybe enabling some verbose server-side logging could give more hints.
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it ----------------------------------- Office: +39 02 23998309 Mobile: +39 333 4963172 Fax: +39 0382 476497 Email: ando@sys-net.it -----------------------------------
openldap-technical@openldap.org