We have installed openldap-2.4.19 backsql and oracle as RDMS. Everthing works fine when I search for a specific entry.
But If I open a LDAP beowser and expand the tree. It tries to run the following query to load all the entries for ObjectClass NetAcadPerson . Unfortunately this query (this Objectclass has) returns almost one million records.
SELECT DISTINCT ldap_entries.id,NetacadPersons.NetAcadUserID,'NetAcadPerson' objectClass,ldap_entries.dn dn FROM ldap_entries,NetacadPersons WHERE NetacadPersons.NetAcadUserID=ldap_entries.keyval AND ldap_entries.oc_map_id=? AND ldap_entries.parent=? AND 3=3
It was able to load 1000+ records with the following info in the logs ....
backsql_oc_get_candidates(): added entry id=471024, keyval=470924 dn="uid=xxxxx,ou=people,dc=netacad,dc=net"
dnPrettyNormal: <uid=xxxxx,ou=people,dc=netacad,dc=net>
<<< dnPrettyNormal: <uid=xxxxx,ou=people,dc=netacad,dc=net>, <uid=xxxxxx,ou=people,dc=netacad,dc=net> backsql_oc_get_candidates(): added entry id=471024, keyval=470924 dn="uid=xxxxx,ou=people,dc=netacad,dc=net"
dnPrettyNormal: <uid=xxxxx,ou=people,dc=netacad,dc=net>
<<< dnPrettyNormal: <uid=xxxxx,ou=people,dc=netacad,dc=net>, <uid=xxxxxx,ou=people,dc=netacad,dc=net>
But after loaading some of them I get the following error ...telling me that the memory allocation falied....
slap_sl_malloc of 16 bytes failed, using ch_malloc slap_sl_malloc of 32 bytes failed, using ch_malloc slap_sl_malloc of 56 bytes failed, using ch_malloc
My questions is - is it possible to restrict number of rows by using "rownum" special ORACLE feature.
By appending some thing like below to the query above.
"AND rownum < 100 "
If it is possible to configure above query, please let me know what slapd configuration I should use. I read all the options in the following man page - http://linux.die.net/man/5/slapd-sql
Let me know if I have any other options to prevent this from happening.
Thanks a lot in advance.
-Nikethan
openldap-software@openldap.org