https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42995
--- Comment #8 from Martin Renvoize (ashimema) <[email protected]> --- Created attachment 201809 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=201809&action=edit Bug 42995: Fix nested +count subqueries with pagination and has_many When nested +count embeds (e.g. biblio.items+count) are used alongside a has_many prefetch (e.g. biblio.suggestions or the implicitly added biblio.biblioitem) and pagination, DBIC's limiting subquery optimization places +select scalar refs in the inner subquery where the parent join alias (e.g. 'biblio') is not yet available. This patch fixes _build_count_subquery to resolve the correlation back to the main table (me) via the FK chain. Instead of generating: (SELECT COUNT(*) FROM items WHERE items.biblionumber = biblio.biblionumber) It now generates: (SELECT COUNT(*) FROM items WHERE items.biblionumber = me.biblionumber) This works because me.biblionumber IS the FK to biblio, holding the same value. The main table columns are always available regardless of DBIC's query structure. Changes: - Add $main_source parameter to _build_count_subquery for FK resolution - Thread main_source through _parse_prefetch and dbic_merge_prefetch - When parent_alias != 'me', resolve through parent relationship condition - Update Query.t assertion to match the new correlation expression Test plan: 1. Apply the regression tests from the previous commit 2. Run: $ ktd --shell k$ prove t/db_dependent/api/v1/acquisitions_orders.t => FAIL: The Bug 42995 subtest fails with 500 errors 3. Apply this patch, repeat from step 2 k$ prove t/Koha/REST/Plugin/Query.t \ t/db_dependent/Koha/Object.t \ t/db_dependent/Koha/REST/Plugin/Objects.t \ t/db_dependent/api/v1/acquisitions_orders.t \ t/db_dependent/api/v1/acquisitions_vendors.t \ t/db_dependent/api/v1/ill_requests.t \ t/db_dependent/api/v1/tickets.t \ t/db_dependent/api/v1/patrons.t => SUCCESS: Tests pass! 4. Sign off :-D Signed-off-by: David Nind <[email protected]> Signed-off-by: Martin Renvoize <[email protected]> -- You are receiving this mail because: You are watching all bug changes. _______________________________________________ Koha-bugs mailing list [email protected] https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
