https://bugs.openldap.org/show_bug.cgi?id=9079
--- Comment #4 from gray@nxg.name gray@nxg.name ---
- Each URI defines a set of object attributes
- One can have multiple olcUniqueURI attributes, _each of which_ creates a
'domain'
- This doesn't say what a 'domain' is
The concept of a "domain" is a key part of the mathematical concept of "sets". As this is clearly talking about sets, the definition of domain follows.
We may be thinking of different set theories, but in the mathematical set theory I'm familiar with, there is no notion of 'domain'. Functions have domains, codomains and ranges which are each sets, but that is part of the theory of functions, not of sets.
Not that it matters, because 'domain' has a variety of meanings in computing contexts, so it does no harm to be precise here. Since the text just above this in the manpage talks of 'scope', in a sense which appears to at least overlap with 'domain' here, I merely suggest that the text explain what it means by 'domain'.
For concreteness, can I suggest:
Each `unique_uri` option defines a 'uniqueness domain' consisting of the set of attributes which would be returned by the specified (RFC 4516) LDAP URI, or the union of the sets of attributes returned by the URIs, if there is more than one. The overlay ensures that no two attributes in this set have the same value. In a 'strict' uniqueness domain (when the keyword 'strict' is present), at most one attribute in the domain may have a null value; in a non-strict domain more than one attribute may have a null value.
This uniqueness constraint is imposed independently for the attributes in each uniqueness domain.
...and delete the paragraph 'It is possible...'
[If 'scope' is a different notion from 'domain', then the text might benefit from some clarification about what the difference is; if they are the same notion, then it might be useful to use the same term for both, or else the careful reader will worry that there is a distinction being made that they don't understand.]
- It's not clear where the quotes go, when combining with 'strict' or
'ignore' (I guess "strict ldap://...").
- Can 'strict' or 'ignore' be combined with the second or subsequent URIs?
This is already explicitly answered in the man page:
"Strictness applies to all URIs within a uniqueness domain" thus it must be combined with the full set of URIs in a given statement.
True. As implied above, it might be useful to relocate the remark about what 'strict' means, but the answer to my question was indeed implicit in the text as it stands.
To be clear, I reiterate that I'm not suggesting the text is inaccurate, simply that it is not as clear as it could be, and I wouldn't bother suggesting documentation edits if the OpenLDAP documentation were not already unusually high quality. Also, when I first read the manpage I largely got the point pretty quickly (it's not a complicated notion), and it's only when I re-read carefully that I started to have doubts.