Bug 513916
Summary: | Server doesn't ignore paged control, if page size and server's estimate of total no of entries are same | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Directory Server | Reporter: | Sankar Ramalingam <sramling> | ||||||
Component: | Directory Server | Assignee: | Noriko Hosoi <nhosoi> | ||||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Viktor Ashirov <vashirov> | ||||||
Severity: | medium | Docs Contact: | |||||||
Priority: | high | ||||||||
Version: | 9.0 | CC: | jgalipea, nkinder, rmeggins | ||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | All | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2016-05-06 14:43:03 UTC | Type: | --- | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 434914, 517385 | ||||||||
Attachments: |
|
Description
Sankar Ramalingam
2009-07-27 05:33:20 UTC
Created attachment 356215 [details] git patch file [Files] ldap/servers/plugins/chainingdb/cb.h ldap/servers/plugins/chainingdb/cb_init.c ldap/servers/plugins/chainingdb/cb_search.c ldap/servers/slapd/back-ldbm/idl_common.c ldap/servers/slapd/back-ldbm/idl_new.c ldap/servers/slapd/back-ldbm/init.c ldap/servers/slapd/back-ldbm/ldbm_search.c ldap/servers/slapd/back-ldbm/proto-back-ldbm.h ldap/servers/slapd/backend.c ldap/servers/slapd/backend_manager.c ldap/servers/slapd/dl.c ldap/servers/slapd/dse.c ldap/servers/slapd/opshared.c ldap/servers/slapd/pblock.c ldap/servers/slapd/proto-slap.h ldap/servers/slapd/slap.h ldap/servers/slapd/slapi-private.h [Fix Description] The code processing search results were returning the PAGE END without knowing there are more entries to return or not. To learn it, introduced "read ahead" one entry when it comes to the PAGE END. If there are more entries, the code undo the read ahead, which prompts for the next page on the client side. If there is no more entries, it returns the status SEARCH END instead of PAGE END. In addition to the read ahead implementation to fix the bug 513916, * supporting Simple Paged Results for chaining backend is added. * fixed a bug in idl_new_fetch (idl_new.c) -- idlistscanlimit was not checked when the cursor comes to the end of an index file. (In reply to comment #1) > Created an attachment (id=356215) [details] > git patch file Sorry, a wrong patch... :( Created attachment 356229 [details]
git patch file (a correct one...)
Reviewed by Nathan (Thank you !!) Pushed to master. $ git merge paged Updating cbed8a2..0565e8c Fast forward ldap/servers/plugins/chainingdb/cb.h | 3 + ldap/servers/plugins/chainingdb/cb_init.c | 4 + ldap/servers/plugins/chainingdb/cb_search.c | 40 +++++++++++++ ldap/servers/slapd/back-ldbm/idl_common.c | 4 +- ldap/servers/slapd/back-ldbm/idl_new.c | 9 +-- ldap/servers/slapd/back-ldbm/init.c | 2 + ldap/servers/slapd/back-ldbm/ldbm_search.c | 16 +++++ ldap/servers/slapd/back-ldbm/proto-back-ldbm.h | 1 + ldap/servers/slapd/backend.c | 6 ++ ldap/servers/slapd/backend_manager.c | 1 + ldap/servers/slapd/dl.c | 13 ++++ ldap/servers/slapd/dse.c | 12 ++++ ldap/servers/slapd/opshared.c | 71 +++++++++++++---------- ldap/servers/slapd/pblock.c | 12 ++++ ldap/servers/slapd/proto-slap.h | 2 +- ldap/servers/slapd/slap.h | 3 + ldap/servers/slapd/slapi-private.h | 2 + 17 files changed, 163 insertions(+), 38 deletions(-) $ git push Counting objects: 49, done. Delta compression using 4 threads. Compressing objects: 100% (25/25), done. Writing objects: 100% (25/25), 4.21 KiB, done. Total 25 (delta 23), reused 0 (delta 0) To ssh://git.fedorahosted.org/git/389/ds.git cbed8a2..0565e8c master -> master verified - RHEL 4 version: redhat-ds-base-8.2.0-2010051204.el4dsrv subtree searched contains 4 users # perl ./ldapsearch.pl -x -pg 2 "(uid=test*)" "dn sn" dn: uid=test1,ou=Special Users,dc=example,dc=com sn: test dn: uid=test2,ou=Special Users,dc=example,dc=com sn: test2 next page size (2): dn: uid=test3,ou=Special Users,dc=example,dc=com sn: test3 dn: uid=test4,ou=Special Users,dc=example,dc=com sn: test4 # perl ./ldapsearch.pl -x -pg 4 "(uid=test*)" "dn sn" dn: uid=test1,ou=Special Users,dc=example,dc=com sn: test dn: uid=test2,ou=Special Users,dc=example,dc=com sn: test2 dn: uid=test3,ou=Special Users,dc=example,dc=com sn: test3 dn: uid=test4,ou=Special Users,dc=example,dc=com sn: test4 |