← Index
NYTProf Performance Profile   « block view • line view • sub view »
For xt/tapper-mcp-scheduler-with-db-longrun.t
  Run on Tue May 22 17:18:39 2012
Reported on Tue May 22 17:23:14 2012

Filename/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/ResultSource/View.pm
StatementsExecuted 47 statements in 334µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
83277µs292µsDBIx::Class::ResultSource::View::::newDBIx::Class::ResultSource::View::new
11114µs16µsDBIx::Class::ResultSource::View::::BEGIN@3DBIx::Class::ResultSource::View::BEGIN@3
11112µs12µsDBIx::Class::ResultSource::View::::BEGIN@6DBIx::Class::ResultSource::View::BEGIN@6
11112µs87µsDBIx::Class::ResultSource::View::::BEGIN@8DBIx::Class::ResultSource::View::BEGIN@8
1117µs15µsDBIx::Class::ResultSource::View::::BEGIN@4DBIx::Class::ResultSource::View::BEGIN@4
0000s0sDBIx::Class::ResultSource::View::::fromDBIx::Class::ResultSource::View::from
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package DBIx::Class::ResultSource::View;
2
3319µs219µs
# spent 16µs (14+2) within DBIx::Class::ResultSource::View::BEGIN@3 which was called: # once (14µs+2µs) by Class::C3::Componentised::ensure_class_loaded at line 3
use strict;
# spent 16µs making 1 call to DBIx::Class::ResultSource::View::BEGIN@3 # spent 2µs making 1 call to strict::import
4318µs223µs
# spent 15µs (7+8) within DBIx::Class::ResultSource::View::BEGIN@4 which was called: # once (7µs+8µs) by Class::C3::Componentised::ensure_class_loaded at line 4
use warnings;
# spent 15µs making 1 call to DBIx::Class::ResultSource::View::BEGIN@4 # spent 8µs making 1 call to warnings::import
5
6331µs112µs
# spent 12µs within DBIx::Class::ResultSource::View::BEGIN@6 which was called: # once (12µs+0s) by Class::C3::Componentised::ensure_class_loaded at line 6
use DBIx::Class::ResultSet;
# spent 12µs making 1 call to DBIx::Class::ResultSource::View::BEGIN@6
7
83190µs2163µs
# spent 87µs (12+76) within DBIx::Class::ResultSource::View::BEGIN@8 which was called: # once (12µs+76µs) by Class::C3::Componentised::ensure_class_loaded at line 8
use base qw/DBIx::Class/;
# spent 87µs making 1 call to DBIx::Class::ResultSource::View::BEGIN@8 # spent 76µs making 1 call to base::import
916µs1197µs__PACKAGE__->load_components(qw/ResultSource/);
# spent 197µs making 1 call to Class::C3::Componentised::load_components
1018µs1224µs__PACKAGE__->mk_group_accessors(
# spent 224µs making 1 call to Class::Accessor::Grouped::mk_group_accessors
11 'simple' => qw(is_virtual view_definition deploy_depends_on) );
12
13=head1 NAME
14
15DBIx::Class::ResultSource::View - ResultSource object representing a view
16
17=head1 SYNOPSIS
18
19 package MyApp::Schema::Result::Year2000CDs;
20
21 use base qw/DBIx::Class::Core/;
22
23 __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
24
25 __PACKAGE__->table('year2000cds');
26 __PACKAGE__->result_source_instance->is_virtual(1);
27 __PACKAGE__->result_source_instance->view_definition(
28 "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
29 );
30 __PACKAGE__->add_columns(
31 'cdid' => {
32 data_type => 'integer',
33 is_auto_increment => 1,
34 },
35 'artist' => {
36 data_type => 'integer',
37 },
38 'title' => {
39 data_type => 'varchar',
40 size => 100,
41 },
42 );
43
44=head1 DESCRIPTION
45
46View object that inherits from L<DBIx::Class::ResultSource>
47
48This class extends ResultSource to add basic view support.
49
50A view has a L</view_definition>, which contains a SQL query. The query can
51only have parameters if L</is_virtual> is set to true. It may contain JOINs,
52sub selects and any other SQL your database supports.
53
54View definition SQL is deployed to your database on
55L<DBIx::Class::Schema/deploy> unless you set L</is_virtual> to true.
56
57Deploying the view does B<not> translate it between different database
58syntaxes, so be careful what you write in your view SQL.
59
60Virtual views (L</is_virtual> true), are assumed to not
61exist in your database as a real view. The L</view_definition> in this
62case replaces the view name in a FROM clause in a subselect.
63
64=head1 EXAMPLES
65
66Having created the MyApp::Schema::Year2000CDs schema as shown in the SYNOPSIS
67above, you can then:
68
69 $2000_cds = $schema->resultset('Year2000CDs')
70 ->search()
71 ->all();
72 $count = $schema->resultset('Year2000CDs')
73 ->search()
74 ->count();
75
76If you modified the schema to include a placeholder
77
78 __PACKAGE__->result_source_instance->view_definition(
79 "SELECT cdid, artist, title FROM cd WHERE year = ?"
80 );
81
82and ensuring you have is_virtual set to true:
83
84 __PACKAGE__->result_source_instance->is_virtual(1);
85
86You could now say:
87
88 $2001_cds = $schema->resultset('Year2000CDs')
89 ->search({}, { bind => [2001] })
90 ->all();
91 $count = $schema->resultset('Year2000CDs')
92 ->search({}, { bind => [2001] })
93 ->count();
94
95=head1 SQL EXAMPLES
96
97=over
98
99=item is_virtual set to false
100
101 $schema->resultset('Year2000CDs')->all();
102
103 SELECT cdid, artist, title FROM year2000cds me
104
105=item is_virtual set to true
106
107 $schema->resultset('Year2000CDs')->all();
108
109 SELECT cdid, artist, title FROM
110 (SELECT cdid, artist, title FROM cd WHERE year ='2000') me
111
112=back
113
114=head1 METHODS
115
116=head2 is_virtual
117
118 __PACKAGE__->result_source_instance->is_virtual(1);
119
120Set to true for a virtual view, false or unset for a real
121database-based view.
122
123=head2 view_definition
124
125 __PACKAGE__->result_source_instance->view_definition(
126 "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
127 );
128
129An SQL query for your view. Will not be translated across database
130syntaxes.
131
132=head2 deploy_depends_on
133
134 __PACKAGE__->result_source_instance->deploy_depends_on(
135 ["MyApp::Schema::Result::Year","MyApp::Schema::Result::CD"]
136 );
137
138Specify the views (and only the views) that this view depends on.
139Pass this an array reference of fully qualified result classes.
140
141=head1 OVERRIDDEN METHODS
142
143=head2 from
144
145Returns the FROM entry for the table (i.e. the view name)
146or the SQL as a subselect if this is a virtual view.
147
148=cut
149
150sub from {
151 my $self = shift;
152 return \"(${\$self->view_definition})" if $self->is_virtual;
153 return $self->name;
154}
155
156=head1 OTHER METHODS
157
158=head2 new
159
160The constructor.
161
162=cut
163
164
# spent 292µs (77+215) within DBIx::Class::ResultSource::View::new which was called 8 times, avg 36µs/call: # 4 times (29µs+87µs) by DBIx::Class::Schema::_register_source at line 1366 of DBIx/Class/Schema.pm, avg 29µs/call # 2 times (23µs+71µs) by DBIx::Class::ResultSourceProxy::Table::table at line 91 of DBIx/Class/ResultSourceProxy/Table.pm, avg 47µs/call # 2 times (25µs+57µs) by DBIx::Class::Schema::clone at line 1041 of DBIx/Class/Schema.pm, avg 41µs/call
sub new {
1653258µs my ( $self, @args ) = @_;
166859µs my $new = $self->next::method(@args);
# spent 59µs making 8 calls to next::method, avg 7µs/call
167 $new->{deploy_depends_on} =
168 { map { $_ => 1 }
169 @{ $new->{deploy_depends_on} || [] } }
170 unless ref $new->{deploy_depends_on} eq 'HASH';
171 return $new;
172}
173
17414µs1;
175
176=head1 AUTHORS
177
178See L<DBIx::Class/CONTRIBUTORS>.
179
180=head1 LICENSE
181
182You may distribute this code under the same terms as Perl itself.
183
184=cut
185