[Dbix-class] DBIx::Class::ResultSet / resolve_prefetch() / Use of
uninitialized value in pattern match
Matt S Trout
dbix-class at trout.me.uk
Thu Jul 31 21:22:56 BST 2008
On Wed, Jul 30, 2008 at 11:17:59AM +0100, Chisel Wright wrote:
> On Wed, Jul 30, 2008 at 10:52:49AM +0100, Matt S Trout wrote:
> > Right, but is it a bug that we don't make undef alias become '' or is
> > it a bug that we don't die on it?
> >
> > Assuming there's nothing using it in undef mode I think for the moment we
> > should just die() when not given an alias.
> >
> > It's maybe arguable that you should have '' mean "don't add an alias at all"
> > but DBIC will never need that feature so I'd rather we left it for the moment.
>
> I'm not entirely sure what _should_ happen.
>
> As far as I can tell, there's no obvious reason why
>
> my @columns = $source->resolve_prefetch( { cd => 'artist' } );
>
> should spew warnings.
>
> To me it looks like a harmless call to make. I'm not sure what "alias"
> is, or where is should be set, and what to.
alias is the prefetch nest, so me.cd, me.cd.artist, etc., I think.
> This line is the one that has problems when $alias is undef:
>
> my $as_prefix = ($alias =~ /^.*?\.(.+)$/ ? $1.'.' : '');
>
> To me it seems that $alias is allowed to be nothing, but wasn't checked
> for defined-ness before using in a m//
Hmm. No, I don't think it is. It's either 'me' or 'me.artist' or whatever.
I suspect you could make it die() on undef -or- '' and the tests would
still pass.
> The overall behaviour with/without my patch is the same, you just don't
> get logs full of "unitialised value" warnings with it.
>
> Obviously as author and maintainer, it's your call, but $alias is
> undefined in some cases.
I've never seen a case where it is - do you have "normal" code that causes
that warning?
If not I think I'm in favour of throwing an exception for the moment, since
I really don't think it makes sense otherwise.
--
Matt S Trout Need help with your Catalyst or DBIx::Class project?
Technical Director http://www.shadowcat.co.uk/catalyst/
Shadowcat Systems Ltd. Want a managed development or deployment platform?
http://chainsawblues.vox.com/ http://www.shadowcat.co.uk/servers/
More information about the DBIx-Class
mailing list