Bug 15877 - C4::Barcodes does not correctly calculate db_max for 'annual' barcodes
authorNick Clemens <nick@bywatersolutions.com>
Wed, 24 Feb 2016 17:10:02 +0000 (17:10 +0000)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Thu, 7 Apr 2016 05:36:13 +0000 (05:36 +0000)
This patch alters the MySQL query to remove a max statement which
incorrectly groups full annual barcodes with numeric values.

Signed-off-by: Srdjan <srdjan@catalyst.net.nz>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
C4/Barcodes/annual.pm

index eb0e80e..1c8a432 100644 (file)
@@ -38,8 +38,8 @@ BEGIN {
 
 sub db_max ($;$) {
        my $self = shift;
-       my $query = "SELECT max(substring_index(barcode,'-',-1)) AS chunk,barcode FROM items WHERE barcode LIKE ? GROUP BY barcode";
-               # FIXME: unreasonably expensive query on large datasets
+       my $query = "SELECT substring_index(barcode,'-',-1) AS chunk,barcode FROM items WHERE barcode LIKE ? ORDER BY chunk DESC LIMIT 1";
+               # FIXME: unreasonably expensive query on large datasets (I think removal of group by does this?)
        my $sth = C4::Context->dbh->prepare($query);
        my ($iso);
        if (@_) {