Skip to content

Commit

Permalink
There is no point of ordering the insides of a complex prefetch witho…
Browse files Browse the repository at this point in the history
…ut a limit
  • Loading branch information
ribasushi committed Mar 10, 2013
1 parent 97e130f commit 4df1400
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 3 deletions.
2 changes: 2 additions & 0 deletions Changes
Expand Up @@ -10,6 +10,8 @@ Revision history for DBIx::Class
invalid relationship graph
- Warn in case of iterative collapse being upgraded to an eager
cursor slurp
- No longer order the insides of a complex prefetch subquery,
unless required to satisfy a limit

* Fixes
- Properly consider unselected order_by criteria during complex
Expand Down
8 changes: 6 additions & 2 deletions lib/DBIx/Class/Storage/DBIHacks.pm
Expand Up @@ -85,8 +85,12 @@ sub _adjust_select_args_for_complex_prefetch {
my $inner_attrs = { %$attrs };
delete $inner_attrs->{$_} for qw/for collapse _prefetch_selector_range select as/;

# if the user did not request it, there is no point using it inside
delete $inner_attrs->{order_by} if delete $inner_attrs->{_order_is_artificial};
# there is no point of ordering the insides if there is no limit
delete $inner_attrs->{order_by} if (
delete $inner_attrs->{_order_is_artificial}
or
! $inner_attrs->{rows}
);

# generate the inner/outer select lists
# for inside we consider only stuff *not* brought in by the prefetch
Expand Down
1 change: 0 additions & 1 deletion t/prefetch/grouped.t
Expand Up @@ -224,7 +224,6 @@ for ($cd_rs->all) {
SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track
FROM cd me
GROUP BY me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track
ORDER BY cdid
) me
LEFT JOIN tags tags ON tags.cd = me.cdid
ORDER BY cdid
Expand Down

0 comments on commit 4df1400

Please sign in to comment.