Fixes for the diamond-relationship prefetch/join problem
authorPeter Rabbitson <ribasushi@cpan.org>
Sun, 17 May 2009 23:10:22 +0000 (23:10 +0000)
committerPeter Rabbitson <ribasushi@cpan.org>
Sun, 17 May 2009 23:10:22 +0000 (23:10 +0000)
commit1979278e1673ab611383389d9cc24c221bad6992
tree4a7932eeda6caa5dc308187abbfad3376d9b8e2a
parentc6e87ebb20dd6f6c36612604f0cefc3e76ed1d4b
Fixes for the diamond-relationship prefetch/join problem
The core of the issue was that resolve_prefetch calculated duplicate join alias numbers separate from resolve_join
In order to solve this, now the only join alias calculation happens in resolve_join (with prefetch being always merged as extra joins), and each join arrayref in from is labeled with the full relationship chain from me to the particular join. Then resolve_prefetch has to walk this chain and pull the necessary alias in order to generate the correct select
lib/DBIx/Class/ResultSet.pm
lib/DBIx/Class/ResultSource.pm