← Index
Performance Profile   « block view • line view • sub view »
For /wise/base/deliv/dev/bin/getfix
  Run on Thu May 20 15:30:03 2010
Reported on Thu May 20 16:25:38 2010

File/wise/base/static/lib/perl5/site_perl/5.10.0/DBIx/Class/Relationship/HasOne.pm
Statements Executed12
Total Time0.000449 seconds

Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1113.3e-50.00036DBIx::Class::Relationship::HasOne::_has_one
1112.8e-50.00039DBIx::Class::Relationship::HasOne::has_one
00000DBIx::Class::Relationship::HasOne::BEGIN
00000DBIx::Class::Relationship::HasOne::might_have

LineStmts.Exclusive
Time
Avg.Code
1package # hide from PAUSE
2 DBIx::Class::Relationship::HasOne;
3
433.4e-51.1e-5use strict;
# spent 11µs making 1 call to strict::import
530.000350.00012use warnings;
# spent 23µs making 1 call to warnings::import
6
7sub might_have {
8 shift->_has_one('LEFT' => @_);
9}
10
11
# spent 386µs (28+358) within DBIx::Class::Relationship::HasOne::has_one which was called # once (28µs+358µs) at line 80 of /wise/base/deliv/dev/lib/perl/WISE/DB/FrameIndex/Frame.pm
sub has_one {
1212.7e-52.7e-5 shift->_has_one(undef() => @_);
# spent 358µs making 1 call to DBIx::Class::Relationship::HasOne::_has_one
13}
14
15
# spent 358µs (33+325) within DBIx::Class::Relationship::HasOne::_has_one which was called # once (33µs+325µs) by DBIx::Class::Relationship::HasOne::has_one at line 12
sub _has_one {
1643.4e-58.5e-6 my ($class, $join_type, $rel, $f_class, $cond, $attrs) = @_;
17 unless (ref $cond) {
18 $class->ensure_class_loaded($f_class);
19 my ($pri, $too_many) = $class->primary_columns;
20
21 $class->throw_exception(
22 "might_have/has_one can only infer join for a single primary key; ".
23 "${class} has more"
24 ) if $too_many;
25
26 $class->throw_exception(
27 "might_have/has_one needs a primary key to infer a join; ".
28 "${class} has none"
29 ) if !defined $pri && (!defined $cond || !length $cond);
30
31 my $f_class_loaded = eval { $f_class->columns };
32 my ($f_key,$guess);
33 if (defined $cond && length $cond) {
34 $f_key = $cond;
35 $guess = "caller specified foreign key '$f_key'";
36 } elsif ($f_class_loaded && $f_class->has_column($rel)) {
37 $f_key = $rel;
38 $guess = "using given relationship '$rel' for foreign key";
39 } else {
40 ($f_key, $too_many) = $f_class->primary_columns;
41 $class->throw_exception(
42 "might_have/has_one can only infer join for a single primary key; ".
43 "${f_class} has more"
44 ) if $too_many;
45 $guess = "using primary key of foreign class for foreign key";
46 }
47 $class->throw_exception(
48 "No such column ${f_key} on foreign class ${f_class} ($guess)"
49 ) if $f_class_loaded && !$f_class->has_column($f_key);
50 $cond = { "foreign.${f_key}" => "self.${pri}" };
51 }
52 $class->add_relationship($rel, $f_class,
53 $cond,
54 { accessor => 'single',
55 cascade_update => 1, cascade_delete => 1,
56 ($join_type ? ('join_type' => $join_type) : ()),
57 %{$attrs || {}} });
# spent 325µs making 1 call to DBIx::Class::ResultSourceProxy::add_relationship
58 1;
59}
60
6113.0e-63.0e-61;