Fix very subtle but deadly bug in single()
authorPeter Rabbitson <ribasushi@cpan.org>
Wed, 24 Apr 2013 02:47:32 +0000 (04:47 +0200)
committerPeter Rabbitson <ribasushi@cpan.org>
Wed, 24 Apr 2013 03:40:46 +0000 (05:40 +0200)
commit1887cd9f0db6e10e4659fa770b064e2bf25bc0b3
tree23ef034d94a811f0f05389d1cb0ed12747dad37b
parentf390d66dabd6359ebe778a1e993956de122e1b85
Fix very subtle but deadly bug in single()

The _select_args result storage introduced in 975b573a did not take
into account that single() operates on the $rs itself, not a fresh
one. As such the first single() arg would be carried around and then
applied to subsequent next() etc iterations. Stop that, as we only
need the attrs in case of collapse => 1 and single() explicitly does
not support this.

While at it do not reuse the cached args at all - while it *appears*
safe, it may very well not be. Leave this for another day
lib/DBIx/Class/ResultSet.pm
lib/DBIx/Class/Storage/DBI.pm
t/search/preserve_original_rs.t
t/search/reentrancy.t [new file with mode: 0644]