On 2013-01-15 21:49, Peter Rabbitson wrote: > On Tue, Jan 15, 2013 at 05:12:12PM +0100, Alexander Hartmaier wrote: >> On 2013-01-15 16:51, Peter Rabbitson wrote: >>> On Tue, Jan 15, 2013 at 10:09:19AM -0500, Jesse Sheidlower wrote: >>>> On Tue, Jan 15, 2013 at 05:18:06AM +1100, Peter Rabbitson wrote: >>>>> On Mon, Jan 14, 2013 at 11:07:34AM -0500, Jesse Sheidlower wrote: >>>>>>> So apart from the mystery around the nonsensical exception - does this >>>>>>> help? >>>>>>> >>>>>>> local $DBIx::Class::ResultSourceHandle::thaw_schema = >>>>>>> $c->model(...)->schema; >>>>>> Yes! Putting that before the "unless" seems to make everything work >>>>>> correctly.... Will be testing further this afternoon. Thanks! >>>>> Please let me know if wider testing is succesful. >>>> In one sense, wider testing was indeed successful. The RS was cached >>>> properly, it worked in several different environments, etc. >>>> >>>> However, it didn't "work" in one particularly crucial way, which in >>>> retrospect I'm surprised I didn't think about: the resultset may have >>>> been cached, but once I get it back, it's still just a resultset, so >>>> when I use it again in the template, it hits the database again. Every >>>> time. >>>> >>>> This is exactly what I wanted to avoid by this whole escapade. >>> You need to combine the above with [1] and/or [2]. >>> >>> [1] https://metacpan.org/module/DBIx::Class::ResultSet#cache >>> [2] https://metacpan.org/module/DBIx::Class::ResultSet#set_cache >>> >>> Cheers >> You mean don't prefetch the relationships and populate it's cache after >> fetching all results? > Um... prefetch does not touch the cache of the *main* rs. I am not sure > what you mean above - explain. My schema has quite some 'side tables' like types, stati and so on. They almost never change. It would help performance if I could tell the schema to load all rows, cache them and populate a relationship from the cache when prefetched. For example
Interface->belongs_to('rel_interface_type', ::Interface_Type, 'fk_interface_type'); Schema->connect({ ... , prefetch => [qw( Interface_Type )], }); # this would not prefetch rel_interface_type like it would normally do but populate the rel_interface_type cache from the cached Interface_Type's my $rs_interfaces = Interface->search_rs(..., { prefetch => 'rel_interface_type' }); Does this make sense? > > Cheers > > > _______________________________________________ > List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class > IRC: irc.perl.org#dbix-class > SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ > Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* T-Systems Austria GesmbH Rennweg 97-99, 1030 Wien Handelsgericht Wien, FN 79340b *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* Notice: This e-mail contains information that is confidential and may be privileged. If you are not the intended recipient, please notify the sender and then delete this e-mail immediately. *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk