Thanks for your advice. I will try to work around it then. On 28 May 2013 20:24, "Peter Rabbitson" <rabbit+d...@rabbit.us> wrote:
> On Tue, May 28, 2013 at 10:01:42AM +0800, lim weityug wrote: > > Hi, > > > > > > > > Our company is maintaining 2 versions of dbix class, which is version > > 0.08115 and 0.08195. We have an issue on defining the condition in > > might_have relationship. Before we have the new server (which is running > > dbix version 0.08195), our result file is like the following: > > > > > > > > __PACKAGE__->might_have( > > > > 'sample', > > > > 'Schema::Result::Sample', > > > > { > > > > 'foreign.pid' => 'self.pid and sample.wstart = 0', > > > > }, > > > > ); > > > > > > > > This works well for version 0.08115 > > It does not work "well" - it works by accident. You are asking DBIC to > look for a column named (literally) q{self.pid and sample.wstart = 0}. > It only works because you are not asking DBIC to quote your identifiers > (a bad practice in general). > > > but it fail for version 0.08195 > > In newer versions relationships metadata is interrogated more closely, > and everything understandably fails. > > > > > We can’t just upgrade our dbix class to latest version as this require > > intensive regression test on our application which is very huge effort > and > > high risk. We’re trying to see if there is any way for having the codes > to > > be run in both dbix versions. > > This is a *really* poor way to handle a critical dependency of a > critical project. While DBIC has an unparallelled track record for > backwards compatibility, there are limits to any effort. As a result you > will find yourself hitting more and more situations just like this one, > and will inevitably end up with a paralyzed codebase. It is just a > matter of time under such a policy. > > QED - there isn't really a practical way to support this invalid syntax > on newer DBIC versions. The "best" solution I can offer is for you to > define the relationship depending which DBIC version your server has > loaded. > > Since DBIC version 0.08190 the proper way to define such relationships > is by using a coderef which returns the SQL::Abstract snippet you are > after: > > > https://metacpan.org/source/RIBASUSHI/DBIx-Class-0.08250/lib/DBIx/Class/Relationship/Base.pm#L128 > > Cheers and good luck - you will need it ;) > > > _______________________________________________ > 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 >
_______________________________________________ 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