Author: spadkins
Date: Wed Jun 30 14:07:09 2010
New Revision: 14217
Modified:
p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm
Log:
added profiling and debug_sql_min_time, debug_sql_regex options to _insert_rows
Modified: p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm Wed Jun 30
14:07:09 2010
@@ -304,11 +304,17 @@
my $ok = 1;
my $context_options = $self->{context}{options};
my $debug_sql = $context_options->{debug_sql};
+ my $profiler = $context_options->{"app.Context.profiler"};
my $explain_sql = $context_options->{explain_sql};
- my ($timer, $elapsed_time);
+ my ($timer, $elapsed_time, $debug_sql_min_time, $debug_sql_regex);
if ($debug_sql) {
+ $debug_sql_min_time = $context_options->{debug_sql_min_time};
+ $debug_sql_regex = $context_options->{debug_sql_regex};
$timer = $self->_get_timer();
}
+ if ($profiler) {
+ $context->profile_start("db");
+ }
my $rows_ref = ref($rows);
if ($rows_ref eq "ARRAY") {
my $maxrows = $options->{maxrows} || 100;
@@ -321,13 +327,13 @@
$nrows_this_insert = $#current_rows + 1;
$sql = $self->_mk_insert_rows_sql($table, $cols,
\...@current_rows, $options);
- if ($debug_sql) {
+ if ($debug_sql && !$debug_sql_min_time && (!$debug_sql_regex ||
$sql =~ /$debug_sql_regex/s)) {
print $App::DEBUG_FILE "DEBUG_SQL: _insert_rows()\n";
print $App::DEBUG_FILE $sql;
}
### TODO: make this work with regex for retry
$retval = $dbh->do($sql);
- if ($debug_sql) {
+ if ($debug_sql && !$debug_sql_min_time && (!$debug_sql_regex ||
$sql =~ /$debug_sql_regex/s)) {
print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval]
$DBI::errstr\n";
print $App::DEBUG_FILE "\n";
}
@@ -368,13 +374,13 @@
$rows = $self->_read_rows_from_file($fh, $cols, \%options);
last if ($#$rows == -1);
$sql = $self->_mk_insert_rows_sql($table, $cols, $rows, $options);
- if ($debug_sql) {
+ if ($debug_sql && !$debug_sql_min_time && (!$debug_sql_regex ||
$sql =~ /$debug_sql_regex/s)) {
print $App::DEBUG_FILE "DEBUG_SQL: _insert_rows()\n";
print $App::DEBUG_FILE $sql;
}
### TODO: make this work with regex for retry
$retval = $dbh->do($sql);
- if ($debug_sql) {
+ if ($debug_sql && !$debug_sql_min_time && (!$debug_sql_regex ||
$sql =~ /$debug_sql_regex/s)) {
print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval]
$DBI::errstr\n";
print $App::DEBUG_FILE "\n";
}
@@ -390,9 +396,22 @@
close(App::Repository::MySQL::FILE);
}
}
+ if ($profiler) {
+ $context->profile_stop("db");
+ $context->{profile_stats}{db}{nrows_write} += $nrows;
+ }
if ($debug_sql) {
$elapsed_time = $self->_read_timer($timer);
- print $App::DEBUG_FILE "DEBUG_SQL: total rows [$nrows] ($elapsed_time
sec)\n";
+ if ($debug_sql_min_time && $elapsed_time >= $debug_sql_min_time &&
(!$debug_sql_regex || $sql =~ /$debug_sql_regex/s)) {
+ print $App::DEBUG_FILE "DEBUG_SQL: _insert_rows(), only the last
sql statement is printed...\n";
+ print $App::DEBUG_FILE $sql;
+ print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval]
$DBI::errstr\n";
+ print $App::DEBUG_FILE "\n";
+ print $App::DEBUG_FILE "DEBUG_SQL: total rows [$nrows]
($elapsed_time sec)\n";
+ }
+ elsif (!$debug_sql_min_time && (!$debug_sql_regex || $sql =~
/$debug_sql_regex/s)) {
+ print $App::DEBUG_FILE "DEBUG_SQL: total rows [$nrows]
($elapsed_time sec)\n";
+ }
}
$self->{sql} = $sql;
$self->{numrows} = $nrows;