Bug 15533: Fix 'ambiguous' SQL query in CanItemBeReserved
authorJulian Maurice <julian.maurice@biblibre.com>
Tue, 12 Apr 2016 13:18:20 +0000 (15:18 +0200)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 29 Apr 2016 10:26:04 +0000 (10:26 +0000)
Adding reserves.itemtype made a query to fail in CanItemBeReserved.
This patch prefixes the column names with the corresponding table names
to prevent that.

You can trigger the error by running
  prove t/db_dependent/Holds.t

You should see something like this:
  Column 'itemtype' in where clause is ambiguous

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
C4/Reserves.pm

index 55ec002..caf44ea 100644 (file)
@@ -523,8 +523,8 @@ sub CanItemBeReserved{
     # level itemtype if the hold has no associated item
     $querycount .=
       C4::Context->preference('item-level_itypes')
-      ? " AND COALESCE( itype, itemtype ) = ?"
-      : " AND itemtype = ?"
+      ? " AND COALESCE( items.itype, biblioitems.itemtype ) = ?"
+      : " AND biblioitems.itemtype = ?"
       if ( $ruleitemtype ne "*" );
 
     my $sthcount = $dbh->prepare($querycount);