annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/StatementHandle.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::StatementHandle
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 Do not use this class directly. It will automatically be used by the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 Bio::EnsEMBL::DBSQL::DBConnection class.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 This class extends DBD::mysql::st so that the DESTROY method may be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 overridden. If the DBConnection::disconnect_when_inactive flag is set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 this statement handle will cause the database connection to be closed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 when it goes out of scope and there are no other open statement handles.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 =head1 METHODS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 package Bio::EnsEMBL::DBSQL::StatementHandle;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 use Bio::EnsEMBL::Utils::Exception qw(warning throw);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 use DBI;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 #use Time::HiRes qw(time);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 @ISA = qw(DBI::st);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 # As DBD::mysql::st is a tied hash can't store things in it,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 # so have to have parallel hash
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 my %dbchash;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 my %dbc_sql_hash;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 sub dbc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 if (@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 my $dbc = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 if(!defined($dbc)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 # without delete key space would grow indefinitely causing mem-leak
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 delete($dbchash{$self});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 $dbchash{$self} = $dbc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 return $dbchash{$self};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 sub sql {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 if (@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 my $sql = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 if(!defined($sql)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 # without delete key space would grow indefinitely causing mem-leak
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 delete($dbc_sql_hash{$self});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 $dbc_sql_hash{$self} = $sql;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 return $dbc_sql_hash{$self};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 sub DESTROY {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 my $dbc = $self->dbc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 $self->dbc(undef);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 my $sql = $self->sql;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 $self->sql(undef);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 # Re-bless into DBI::st so that superclass destroy method is called if
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 # it exists (it does not exist in all DBI versions).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 bless( $self, 'DBI::st' );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 # The count for the number of kids is decremented only after this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 # function is complete. Disconnect if there is 1 kid (this one)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 # remaining.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 if ( $dbc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 && $dbc->disconnect_when_inactive()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 && $dbc->connected
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 && ( $dbc->db_handle->{Kids} == 1 ) )
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 if ( $dbc->disconnect_if_idle() ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 warn("Problem disconnect $self around sql = $sql\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 } ## end sub DESTROY
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 # Comment out this "__END__" for printing out handy debug information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 # (every query if you want).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 __END__
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 # To stop caching messing up your timings, try doing the following on
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 # any adapter:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 # $slice_adaptor->dbc()->db_handle()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 # ->do("SET SESSION query_cache_type = OFF");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 # To start logging:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 # Bio::EnsEMBL::DBSQL::StatementHandle->sql_timing_start();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 # To display the results:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 # Bio::EnsEMBL::DBSQL::StatementHandle->sql_timing_print(1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 # To pause logging:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 # Bio::EnsEMBL::DBSQL::StatementHandle->sql_timimg_pause();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 # To resume logging after pause:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 # Bio::EnsEMBL::DBSQL::StatementHandle->sql_timimg_resume();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 use Time::HiRes qw(time);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 my @bind_args = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 my $dump = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 my %total_time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 my %min_time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 my %max_time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 my %number_of_times;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 my %first_time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 my $grand_total;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 sub sql_timing_start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 %total_time = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 %number_of_times = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 %min_time = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 %max_time = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 %first_time = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 $dump = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 sub sql_timing_pause { $dump = 0 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 sub sql_timing_resume { $dump = 1 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 sub sql_timing_print {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 my ( $self, $level, $fh ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 my $grand_total = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 if ( !defined($fh) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 $fh = \*STDERR;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 print( ref($fh), "\n" );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 foreach my $key ( keys %total_time ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 $grand_total += $total_time{$key};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 if ( !( defined($level) and $level ) ) { next }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 print( $fh $key, "\n" );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 print( $fh
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 "total\t \tnum\tfirst \t\tavg\t \t[min ,max ]\n" );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 printf( $fh "%6f\t%d\t%6f\t%6f\t[%6f, %6f]\n\n",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 $total_time{$key}, $number_of_times{$key},
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 $first_time{$key}, ( $total_time{$key}/$number_of_times{$key} ),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 $min_time{$key}, $max_time{$key} );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 printf( $fh "\ntotal time %6f\n\n", $grand_total );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 } ## end sub sql_timing_print
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 sub bind_param {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 my ( $self, @args ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 $bind_args[ $args[0] - 1 ] = $args[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 $self->SUPER::bind_param(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 sub execute {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 my ( $self, @args ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 my $retval;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 # Skip dumping if !$dump
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 if ( !$dump ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 local $self->{RaiseError};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 $retval = $self->SUPER::execute(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 if ( !defined($retval) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 throw("Failed to execute SQL statement");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 return $retval;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 my $sql = $self->sql();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 my @chrs = split( //, $sql );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 my $j = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 for ( my $i = 0; $i < @chrs; $i++ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 if ( $chrs[$i] eq '?' && defined( $bind_args[$j] ) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 $chrs[$i] = $bind_args[ $j++ ];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 my $str = join( '', @chrs );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 # Uncomment this line if you want to see sql in order.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 # print( STDERR "\n\nSQL:\n$str\n\n" );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 my $time = time();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 local $self->{RaiseError};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 $retval = $self->SUPER::execute(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 if ( !defined($retval) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 throw("Failed to execute SQL statement");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 # my $res = $self->SUPER::execute(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 $time = time() - $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 if ( defined( $total_time{$sql} ) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 $total_time{$sql} += $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 $number_of_times{$sql}++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 if ( $min_time{$sql} > $time ) { $min_time{$sql} = $time }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 if ( $max_time{$sql} < $time ) { $max_time{$sql} = $time }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 $first_time{$sql} = $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 $max_time{$sql} = $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 $min_time{$sql} = $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 $total_time{$sql} = $time;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 $number_of_times{$sql} = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 return $retval;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 } ## end sub execute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 1;