https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42995
--- Comment #9 from Martin Renvoize (ashimema) <[email protected]> --- Created attachment 201810 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=201810&action=edit Bug 42995: (QA follow-up) Harden nested +count FK-chain resolution The FK-chain resolution added in the previous patch only handles ONE level of nesting: it requires $parent_alias to be a direct relationship of $main_source. This holds for every +count embed currently declared in api/v1/swagger/ (all exactly one level deep, e.g. biblio.items+count), but if that assumption is ever violated - a deeper nested +count, a parent relation with a coderef (custom join) condition, or no matching FK column name - the previous code silently fell back to the pre-fix expression ($parent_alias.$fk_self), which can reference a join alias that isn't available inside DBIC's limiting subquery, reproducing the original 500 with no diagnostic. This patch makes _build_count_subquery decline to build a subquery (return undef) when the correlation can't be safely resolved, instead of emitting SQL that may be broken. The caller already has an existing, tested degradation path for "no DBIC relationship info" (prefetch the association directly; to_api falls back to the Perl-level ->count call; sorting on it is rejected with a clean 400) - unresolved nested correlations now go through that same path rather than risking a 500. Also: - Extract the repeated "_resultset vs _result" result-source lookup into a shared _result_source() helper (was duplicated in dbic_merge_prefetch and _build_count_subquery). - Document the one-level-deep limitation in _build_count_subquery's POD. - Add a regression test pinning the 2-level-nested-+count case: it must fall back to a plain prefetch (no COUNT subquery) rather than error or emit unsafe SQL. Test plan: 1. ktd --shell 2. 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 => All pass, no regressions. 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/
