|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package DBIx::Class;  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
8102
 | 
 use strict;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
825
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
11154
 | 
    | 
| 
4
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
1674
 | 
 use warnings;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
615
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
30293
 | 
    | 
| 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our $VERSION;  | 
| 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Always remember to do all digits for the version even if they're 0  | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports  | 
| 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # brain damage and presumably various other packaging systems too  | 
| 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # $VERSION declaration must stay up here, ahead of any other package  | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # declarations, as to not confuse various modules attempting to determine  | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # this ones version, whether that be s.c.o. or Module::Metadata, etc  | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 $VERSION = '0.082840';  | 
| 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 $VERSION = eval $VERSION if $VERSION =~ /_/; # numify for warning-free dev releases  | 
| 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
18
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
2089
 | 
 use DBIx::Class::_Util;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
734
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
17612
 | 
    | 
| 
19
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
1825
 | 
 use mro 'c3';  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
662
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2938
 | 
    | 
| 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
21
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
191377
 | 
 use DBIx::Class::Optional::Dependencies;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
885
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
16508
 | 
    | 
| 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
23
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
2305
 | 
 use base qw/DBIx::Class::Componentised DBIx::Class::AccessorGroup/;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
648
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
176164
 | 
    | 
| 
24
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
170595
 | 
 use DBIx::Class::StartupCheck;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
850
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
10567
 | 
    | 
| 
25
 | 
380
 | 
 
 | 
 
 | 
  
380
  
 | 
 
 | 
143819
 | 
 use DBIx::Class::Exception;  | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
801
 | 
    | 
| 
 
 | 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
101248
 | 
    | 
| 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __PACKAGE__->mk_group_accessors(inherited => '_skip_namespace_frames');  | 
| 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __PACKAGE__->_skip_namespace_frames('^DBIx::Class|^SQL::Abstract|^Try::Tiny|^Class::Accessor::Grouped|^Context::Preserve');  | 
| 
29
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # FIXME - this is not really necessary, and is in  | 
| 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # fact going to slow things down a bit  | 
| 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # However it is the right thing to do in order to get  | 
| 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # various install bases to highlight their brokenness  | 
| 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Remove at some unknown point in the future  | 
| 
35
 | 
45541
 | 
 
 | 
 
 | 
  
45541
  
 | 
 
 | 
3571082
 | 
 sub DESTROY { &DBIx::Class::_Util::detected_reinvoked_destructor }  | 
| 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
37
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub mk_classdata {  | 
| 
38
 | 
5847
 | 
 
 | 
 
 | 
  
5847
  
 | 
  
0
  
 | 
25610
 | 
   shift->mk_classaccessor(@_);  | 
| 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub mk_classaccessor {  | 
| 
42
 | 
5847
 | 
 
 | 
 
 | 
  
5847
  
 | 
  
0
  
 | 
7763
 | 
   my $self = shift;  | 
| 
43
 | 
5847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
32056
 | 
   $self->mk_group_accessors('inherited', $_[0]);  | 
| 
44
 | 
5847
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
1903090
 | 
   $self->set_inherited(@_) if @_ > 1;  | 
| 
45
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
47
 | 
6555
 | 
 
 | 
 
 | 
  
6555
  
 | 
  
0
  
 | 
963928
 | 
 sub component_base_class { 'DBIx::Class' }  | 
| 
48
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
49
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub MODIFY_CODE_ATTRIBUTES {  | 
| 
50
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
1877
 | 
   my ($class,$code,@attrs) = @_;  | 
| 
51
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
52
 | 
   $class->mk_classdata('__attr_cache' => {})  | 
| 
52
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     unless $class->can('__attr_cache');  | 
| 
53
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
29
 | 
   $class->__attr_cache->{$code} = [@attrs];  | 
| 
54
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
22
 | 
   return ();  | 
| 
55
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
56
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
57
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub _attr_cache {  | 
| 
58
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
1
 | 
   my $self = shift;  | 
| 
59
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
27
 | 
   my $cache = $self->can('__attr_cache') ? $self->__attr_cache : {};  | 
| 
60
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
61
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   return {  | 
| 
62
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     %$cache,  | 
| 
63
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
12
 | 
     %{ $self->maybe::next::method || {} },  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
    | 
| 
64
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   };  | 
| 
65
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
66
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
67
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # *DO NOT* change this URL nor the identically named =head1 below  | 
| 
68
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # it is linked throughout the ecosystem  | 
| 
69
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub DBIx::Class::_ENV_::HELP_URL () {  | 
| 
70
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   'http://p3rl.org/DBIx::Class#GETTING_HELP/SUPPORT'  | 
| 
71
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
72
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
73
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
74
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
75
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |