Hi,
This is a bug. To fix edit GT/SQL/Search/STH.pm and change around line 79 from:
$self->{max_index} = $self->{index} + $self->{mh};
to:
$self->{max_index} = $self->{index} + $self->{mh} - 1;
While you are there, this is also a bug on complex sort orders not ordering properly. Change the code at line 62:
Code:
unless ($self->{'score_sort'}) {
if ( $self->{'sb'} and ( $self->{'sb'} ne 'score' ) and not( ref( $self->{sb} ) ) ) {
if ( $self->{'sb'} =~ /^\w+$/ ) {
if ($self->{'sb'} =~ /\s(?:asc|desc)/i) {
$sb = 'ORDER BY ' . $self->{'sb'};
}
else {
$sb = 'ORDER BY ' . $self->{'sb'} . ' ' . $self->{so};
}
}
else {
$self->error( 'BASDB', 'WARN', $self->{sb} );
}
}
elsif ( ( ref $self->{'sb'} ) eq 'ARRAY' ) {
foreach ( @{$self->{'sb'}} ) {
/^w+$/ or $self->error( 'BASDB', 'WARN', $self->{sb} ), next;
};
$sb = 'ORDER BY ' . join(',', @{$self->{'sb'}});
}
}
to
Code:
unless ($self->{'score_sort'}) {
if ( $self->{'sb'} and ( $self->{'sb'} ne 'score' ) and not( ref( $self->{sb} ) ) ) {
if ( $self->{'sb'} =~ /^[\w\s,]+$/ ) {
if ($self->{'sb'} =~ /\s(?:asc|desc)/i) {
$sb = 'ORDER BY ' . $self->{'sb'};
}
else {
$sb = 'ORDER BY ' . $self->{'sb'} . ' ' . $self->{so};
}
}
else {
$self->error( 'BASDB', 'WARN', $self->{sb} );
}
}
elsif ( ( ref $self->{'sb'} ) eq 'ARRAY' ) {
foreach ( @{$self->{'sb'}} ) {
/^[\w\s,]+$/ or $self->error( 'BASDB', 'WARN', $self->{sb} ), next;
};
$sb = 'ORDER BY ' . join(',', @{$self->{'sb'}});
}
}
Sorry about that,
Cheers,
Alex
--
Gossamer Threads Inc.