Bug 33568: Remove LPAD ordering

This is coming from bug 3521 it seems. And we are going to deal with
this later if people complains.

kidclamp> the performance issue for sites with many copies is bigger than sorting issues imho
kidclamp> drop the LPAD I say :-)

Signed-off-by: Laurence Rault <laurence.rault@biblibre.com>
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Jonathan Druart 2024-02-01 16:29:24 +01:00 committed by Katrin Fischer
parent a767e15c74
commit db74a8112a
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
3 changed files with 2 additions and 16 deletions

View file

@ -466,13 +466,9 @@ sub search_ordered {
return $self->search( return $self->search(
{}, {},
{ {
'+select' => [{
lpad => ['copynumber', \8, \"'0'"], '-as' => 'lpad_copynumber',
}],
order_by => [ order_by => [
'homebranch.branchname', 'homebranch.branchname',
'me.enumchron', 'me.enumchron',
'lpad_copynumber',
{-desc => 'me.dateaccessioned'} {-desc => 'me.dateaccessioned'}
], ],
join => ['homebranch'] join => ['homebranch']

View file

@ -307,7 +307,6 @@ sub get_items {
$items_rs = $items_rs->filter_by_bookable if $bookable_only; $items_rs = $items_rs->filter_by_bookable if $bookable_only;
# FIXME We need to order_by serial.publisheddate if we have _order_by=+me.serial_issue_number # FIXME We need to order_by serial.publisheddate if we have _order_by=+me.serial_issue_number
my $items = $c->objects->search($items_rs); my $items = $c->objects->search($items_rs);
delete $_->{lpad_copynumber} for @$items;
return $c->render( return $c->render(
status => 200, status => 200,

View file

@ -1792,7 +1792,7 @@ subtest 'move_to_biblio() tests' => sub {
subtest 'search_ordered' => sub { subtest 'search_ordered' => sub {
plan tests => 9; plan tests => 8;
$schema->storage->txn_begin; $schema->storage->txn_begin;
@ -1824,17 +1824,8 @@ subtest 'search_ordered' => sub {
[ $item3->itemnumber, $item2->itemnumber, $item1->itemnumber ], [ $item3->itemnumber, $item2->itemnumber, $item1->itemnumber ],
"not a serial - order by enumchron" ); "not a serial - order by enumchron" );
# order_by LPAD( me.copynumber, 8, '0' )
$biblio->items->update( { enumchron => undef } );
$item1->discard_changes->update( { copynumber => '12345678' } );
$item2->discard_changes->update( { copynumber => '34567890' } );
$item3->discard_changes->update( { copynumber => '23456789' } );
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ],
[ $item1->itemnumber, $item3->itemnumber, $item2->itemnumber ],
"not a serial - order by LPAD( me.copynumber, 8, '0' )" );
# order_by -desc => 'me.dateaccessioned' # order_by -desc => 'me.dateaccessioned'
$biblio->items->update( { copynumber => undef } ); $biblio->items->update( { enumchron => undef } );
$item1->discard_changes->update( { dateaccessioned => '2022-08-19' } ); $item1->discard_changes->update( { dateaccessioned => '2022-08-19' } );
$item2->discard_changes->update( { dateaccessioned => '2022-07-19' } ); $item2->discard_changes->update( { dateaccessioned => '2022-07-19' } );
$item3->discard_changes->update( { dateaccessioned => '2022-09-19' } ); $item3->discard_changes->update( { dateaccessioned => '2022-09-19' } );