Improve performance for cd/ls for containers with a large number of

entries.  Patch from Yann Cezard <yann.cezard@univ-pau.fr>.

FossilOrigin-Name: 873471574ca4aa3e01b9e0a30a151e9537bc4600938f61daa3c6c0c1dfef446b
This commit is contained in:
mahlon@laika.com 2011-02-18 02:00:54 +00:00
parent d91b74c290
commit d676104d7a

View file

@ -996,7 +996,7 @@ sub run_cd
$self->base( $newbase );
# get new 'cwd' listing
my $s = $self->search({ scope => 'one' });
my $s = $self->search({ scope => 'one', attrs => ['dn'] });
if ( $s->{'code'} ) {
print "$s->{'message'}\n";
return;
@ -1398,6 +1398,7 @@ sub run_list
my $self = shift;
my @filters = @_;
my $base = $self->base();
my $attrs = [ 'dn', 'hasSubordinates' ];
# setup filters
my ( $flags, $filter );
@ -1415,13 +1416,16 @@ sub run_list
if ( $flags ) {
$recurse = $flags =~ /R/;
$long = $flags =~ /l/;
if ($long) {
$attrs = [ '*', 'hasSubordinates' ];
}
}
my $s = $self->search({
scope => $recurse ? 'sub' : 'one',
vals => 1,
filter => $filter,
attrs => [ '*', 'hasSubordinates' ]
attrs => $attrs
});
if ( $s->{'code'} ) {
print "$s->{'message'}\n";