Hello,
I want to use following filter: "uid>=branch" (greater or equal).
Log entry: filter="(?=undefined)".
I searched the web and found out that I have to add an ORDERING rule to the attribute type definition of 'uid'.
Is that right?
Where can I add this rule, in core.schema the type definition of 'uid' is a comment. I uncomment it but slapd says the attribute is declared twice. I can´t find any other entries. In cosine.schema the entry is a comment too.
Where did I found the definition?
(openldap 2.3.38)
Andreas
"Andreas Schoe" andi@gfz-potsdam.de writes:
Hello,
I want to use following filter: "uid>=branch" (greater or equal).
Log entry: filter="(?=undefined)".
I searched the web and found out that I have to add an ORDERING rule to the attribute type definition of 'uid'.
Never modify a standard track schema unless the corresponding rfc has been modified.
Is that right?
the attribute type uid has syntax directory string, ORDERING requires a numeric string syntax.
Where can I add this rule, in core.schema the type definition of 'uid' is a comment. I uncomment it but slapd says the attribute is declared twice. I can´t find any other entries. In cosine.schema the entry is a comment too.
the attribute type uid is hard coded in schema_prep.c
[...]
-Dieter
Andreas Schoe skrev, on 23-11-2007 10:18:
I want to use following filter: "uid>=branch" (greater or equal).
Well, my gq says that the attribute uid is caseignoreMatch for *equality*. IOW it's a string subtype match. You can't "greater or equal" a string, you can glob it or whatever and be subject to its rules.
Log entry: filter="(?=undefined)".
I searched the web and found out that I have to add an ORDERING rule to the attribute type definition of 'uid'.
Is that right?
Nope, the filter is just wrong.
Where can I add this rule, in core.schema the type definition of 'uid' is a comment. I uncomment it but slapd says the attribute is declared twice.
Much core.schema stuff is already built in to 2.3's slapd, that's why it's commented out in the text files. This attribute is one of them.
I can´t find any other entries. In cosine.schema the entry is a comment too.
That's life for you ;) You have a wrong filter, yours can never work, you need to look at your logic again.
Where did I found the definition?
This I can not parse. There is no other definition.
--Tonni
Tony Earnshaw writes:
Andreas Schoe skrev, on 23-11-2007 10:18:
I want to use following filter: "uid>=branch" (greater or equal).
Well, my gq says that the attribute uid is caseignoreMatch for *equality*. IOW it's a string subtype match. You can't "greater or equal" a string, you can glob it or whatever and be subject to its rules.
Yes you can, that's what an ORDERING matching rule is for. But as Dieter said, it's a bad idea to modify the schema definition of standard attributes. Also you can't index for caseExactOrderingMatch.
(...) Nope, the filter is just wrong.
The filter would be fine if uid has an ORDERING rule. (Well, except filers should have parens around them: "(uid>=branch)". Not all clients insert missing parens.)
As far as I can tell from the LDAP standard, the extended filter (&(uid=*)(!(uid:caseExactOrderingMatch:=branch))) should work, but it doesn't. (uid is present and is not smaller than "branch".) I may have said that before, but I don't remember if the answer is that I'm confused or that I should have filed an ITS.
openldap-software@openldap.org