[Dbix-class] [ANNOUNCE] A much faster DBIx::Class public trial round three - v0.08242

Peter Rabbitson rabbit+dbic at rabbit.us
Sun Mar 10 15:31:39 GMT 2013


Yet another release of DBIC featuring the experimental constructor 
rewrite just hit CPAN. Please grab and test 0.08242-TRIAL from your 
nearest mirror [1]. You can install the release in question by simply 

  cpan R/RI/RIBASUSHI/DBIx-Class-0.08242-TRIAL.tar.gz


  cpanm http://cpan.metacpan.org/authors/id/R/RI/RIBASUSHI/DBIx-Class-0.08242-TRIAL.tar.gz

This version includes a merge of all changes in the stable release 
(0.08209), and a lot more. Unlike last time, there is a ton of changes, 
mostly filling-in glaring gaps in the new arbitrary selection prefetch 
support. It is now possible to correctly limit and group resultsets 
regardless of the requested order_by (within reason of course). None of 
these changes, however, should be visible to the user (the test suite 
did not require any changes, which is always a good sign).

All *reported* concerns raised during the testing of 0.08240 and 0.08241 
have been addressed, and more backwards compatibility codepaths have 
been put in place. At this point 0.08242 should work indistinguishably 
from 0.08209.

*HOWEVER* - due to the amount of changes to the subqueried prefetch 
codepath, please make sure you test this release again, even if 
0.08240/0.08241 worked for you without a hitch. The possibility that new 
bugs have been introduced is not too high, but not low enough for 
comfort either.

At this point the dev-team is not aware of any issues, so if no problems
are reported for 10 days or so this may very well ship to CPAN as an
official 0.08250 (non-trial).

And in closing some links to the main highlight of this release: Given a 
resultset like [2] (note the batshit insane order_by), we can limit it 
as follows [3], and still get precisely the result we expect [4][5]. What 
happens behind the scenes [6] may seem heavy, but in fact is rather 
performant (and besides is the only way to answer a question so 
formulated, utilizing universally valid SQL).

So that should be it for now

Cheers and thanks for testing!

[1] https://metacpan.org/release/RIBASUSHI/DBIx-Class-0.08242-TRIAL
[2] https://github.com/dbsrgits/dbix-class/blob/topic/constructor_rewrite/t/prefetch/o2m_o2m_order_by_with_limit.t#L20
[3] https://github.com/dbsrgits/dbix-class/blob/topic/constructor_rewrite/t/prefetch/o2m_o2m_order_by_with_limit.t#L82
[4] https://github.com/dbsrgits/dbix-class/blob/topic/constructor_rewrite/t/prefetch/o2m_o2m_order_by_with_limit.t#L125
[5] https://github.com/dbsrgits/dbix-class/blob/topic/constructor_rewrite/t/prefetch/o2m_o2m_order_by_with_limit.t#L29
[6] https://github.com/dbsrgits/dbix-class/blob/topic/constructor_rewrite/t/prefetch/o2m_o2m_order_by_with_limit.t#L89

More information about the DBIx-Class mailing list