annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/StatementHandle.pm @ 3:d30fa12e4cc5 default tip

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