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;

Reply via email to