From cde589c85791f9bce6b1fdfd2a3a4e64b6afd64d Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 1 Feb 2024 16:29:24 +0100 Subject: [PATCH] Bug 33568: Remove LPAD ordering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Emily Lamancusa Signed-off-by: Tomás Cohen Arazi --- Koha/Items.pm | 4 ---- Koha/REST/V1/Biblios.pm | 1 - t/db_dependent/Koha/Items.t | 13 ++----------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/Koha/Items.pm b/Koha/Items.pm index 03fd6da0ac3..f3edb776856 100644 --- a/Koha/Items.pm +++ b/Koha/Items.pm @@ -466,13 +466,9 @@ sub search_ordered { return $self->search( {}, { - '+select' => [{ - lpad => ['copynumber', \8, \"'0'"], '-as' => 'lpad_copynumber', - }], order_by => [ 'homebranch.branchname', 'me.enumchron', - 'lpad_copynumber', {-desc => 'me.dateaccessioned'} ], join => ['homebranch'] diff --git a/Koha/REST/V1/Biblios.pm b/Koha/REST/V1/Biblios.pm index 59d4c62f297..edb51653146 100644 --- a/Koha/REST/V1/Biblios.pm +++ b/Koha/REST/V1/Biblios.pm @@ -307,7 +307,6 @@ sub get_items { $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 my $items = $c->objects->search($items_rs); - delete $_->{lpad_copynumber} for @$items; return $c->render( status => 200, diff --git a/t/db_dependent/Koha/Items.t b/t/db_dependent/Koha/Items.t index a7e1fc72c16..c29200e9a04 100755 --- a/t/db_dependent/Koha/Items.t +++ b/t/db_dependent/Koha/Items.t @@ -1792,7 +1792,7 @@ subtest 'move_to_biblio() tests' => sub { subtest 'search_ordered' => sub { - plan tests => 9; + plan tests => 8; $schema->storage->txn_begin; @@ -1824,17 +1824,8 @@ subtest 'search_ordered' => sub { [ $item3->itemnumber, $item2->itemnumber, $item1->itemnumber ], "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' - $biblio->items->update( { copynumber => undef } ); + $biblio->items->update( { enumchron => undef } ); $item1->discard_changes->update( { dateaccessioned => '2022-08-19' } ); $item2->discard_changes->update( { dateaccessioned => '2022-07-19' } ); $item3->discard_changes->update( { dateaccessioned => '2022-09-19' } ); -- 2.34.1