On Sun Oct 13 20:40:40 2019, ETHER wrote:
Show quoted text> On 2019-10-13 10:15:26, RIBASUSHI wrote:
>
> > > Were any of the changes in 2.04 significant (in a positive way) to
> > > you?
> >
> > This is a loaded question, I rather not answer it.
>
> It was not loaded. I was asking if any of those changes are important
> to you -- that is, if I rolled back everything, would there be more
> problems.
>
There would be no problems rom my perspective. Though again - the DBIC use case is very obscure, I rather not have the Data::Page changes be held back by it. I just need a few weeks.
Show quoted text> > I am simply reporting a bug and inquiring what are my options. I
> > rather not go down the path of near-synchronous dialogue - just let
> > me
> > know what are you planning to do.
>
> I will not release changes to the PAUSE index that are known to be
> breaking an important downstream module.
Excellent.
Show quoted text>
> After that, I am trying to find the right course forward, but your
> terse responses are not helping. At this point I do not understand
> what the problem is with 49529b87a; I have not been able to reproduce
> any issues with DBIx::Class::ResultSet::Pager.
I made several bad assumptions based on reading
https://github.com/karenetheridge/Data-Page/commit/02456a21505a8e7cbc67d34b7911356c2d5a79a6#diff-7d8a9cef418ee48430e98051fff20c8a . Specifically:
- The fact that you fixed the bug implied that you understood what the coderef piece is for in the first place
- Adding DBIC as an optional test-prereq implied that you ran DBIC's entire test suite against the new version of Data::Page.
Now that I know this hasn't happened - here is the gist:
- Previously all current_page() checks happened at get-time, which allowed for parts of the stack to be "lazified"
- This was (ab)used to skip an expensive `SELECT COUNT(*)...` when the user cares about the first page ( 99% of the cases )
- The change you made forces the sanity check to happen at *object construction time*, which fires the coderef nullifying all lazyfication by virtue of current_page($foo) => last_page() => total_entries()
To be even more specific, this block is now impossible to satisfy:
https://metacpan.org/source/RIBASUSHI/DBIx-Class-0.082841/t/67pager.t#L19-28
With all that said, I again must stress that this is probably the only case of lazification in the wild. Thus having DBIC part ways with Data::Page is likely the correct answer.
It isup to you how this ticket gets resolved ( revert or won't-fix ), I should have my side squared away in couple weeks.