Revert the smart-select-ordering introduced in 36fd7f07
authorPeter Rabbitson <ribasushi@cpan.org>
Tue, 15 Feb 2011 11:43:33 +0000 (12:43 +0100)
committerArthur Axel 'fREW' Schmidt <frioux@gmail.com>
Mon, 2 May 2011 14:49:57 +0000 (09:49 -0500)
commitf7f53a894c479aa594b9082ee461568fab8a81f3
treef595702f21c6c22357b867bea69d499a0e78c289
parent5b4f3fd0be21b22b93801125238795ba2b6844d6
Revert the smart-select-ordering introduced in 36fd7f07

While on its surface an awesome idea, it proced to be problematic:
users of ->cursor and ->as_query expected that the result will have the same
column-order as what they put in the arguments. Also users abuse +select as
there's no tomorrow, which yielded interesting bugs. The current (and I hope
final) behavior is:

At the end of a chain, the resulting SQL will contain:

- a merger of all columns and then all +columns attributes in the
  declared order. If columns is declared as a multiselect hashref
  i.e. { as1 => sel1, as2 => sel2 }, then the selectors for this
  segment are ordered alphabetically. De-duplication is also always
  performed on columns arguments - only the first set of identical
  select/as pairs is preserved

- a merger of all select/as pairs, strict order, no deduplication

- a merger of +select/+as pairs, same rules as above

As a result of this prefetch on un-balanced resultsets now properly throws
an exception
Changes
lib/DBIx/Class/ResultSet.pm
t/prefetch/correlated.t
t/prefetch/with_limit.t
t/search/select_chains.t
t/search/select_chains_unbalanced.t