Author: spadkins
Date: Wed Nov 25 11:29:04 2009
New Revision: 13611

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm

Log:
added support for the profiler_log

Modified: p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm Wed Nov 25 11:29:04 2009
@@ -184,7 +184,7 @@
         eval {
             my $dbh = DBI->connect($dsn, $self->{dbuser}, $self->{dbpass}, 
$attr);
             if ($self->{dbi_post_connect_stmt}) {
-                my $debug_sql = $self->{context}{options}{debug_sql};
+                #my $debug_sql = $self->{context}{options}{debug_sql};
                 my $stmts = $self->{dbi_post_connect_stmt};
                 $stmts =~ s/;$//;
                 foreach my $stmt (split(/\s*;\s*/, $stmts)) {
@@ -363,8 +363,8 @@
 
     my $name = $self->{name};
 
-
-    my $options = $self->{context}{options} || {};
+    my $context = $self->{context};
+    my $options = $context->{options} || {};
 
     my $config_from_options = 1;
     my $config_from_ext_options = 0;
@@ -415,8 +415,9 @@
         $dbh = $self->{dbh};
     }
 
-    my $context_options = $self->{context}{options};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -426,6 +427,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     ### TODO: make this similar to the _connect code, using a regex named 
retryable_select_error_regex
     while (1) {
         my ($column, %deserializer, $deserializer_name, $serializer);
@@ -465,9 +469,14 @@
             last;
         }
     }
+    my $nrows = (defined $row ? 1 : 0);
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_read} += $nrows;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
-        print $App::DEBUG_FILE "DEBUG_SQL: nrows [", (defined $row ? 1 : 0), 
"] ($elapsed_time sec) $DBI::errstr\n";
+        print $App::DEBUG_FILE "DEBUG_SQL: nrows [$nrows] ($elapsed_time sec) 
$DBI::errstr\n";
         if ($debug_sql >= 2) {
             print $App::DEBUG_FILE "DEBUG_SQL: [", ($row ? join("|",map { 
defined $_ ? $_ : "undef" } @$row) : ""), "]\n";
         }
@@ -502,8 +511,9 @@
     $startrow = $options->{startrow} || 0;
     $endrow   = $options->{endrow} || 0;
 
-    my $context_options = $self->{context}{options};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -513,6 +523,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     while (1) {
         my ($column, %deserializer, $deserializer_name, $serializer);
         my $column_defs = $self->{table}{$table}{column};
@@ -552,9 +565,14 @@
             last;
         }
     }
+    my $nrows = (defined $rows ? ($#$rows+1) : 0);
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_read} += $nrows;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
-        print $App::DEBUG_FILE "DEBUG_SQL: nrows [", (defined $rows ? 
($#$rows+1) : 0), "] ($elapsed_time sec) $DBI::errstr\n";
+        print $App::DEBUG_FILE "DEBUG_SQL: nrows [$nrows] ($elapsed_time sec) 
$DBI::errstr\n";
         if ($debug_sql >= 2) {
             foreach my $row (@$rows) {
                 print $App::DEBUG_FILE "DEBUG_SQL: [", join("|",map { defined 
$_ ? $_ : "undef"} @$row), "]\n";
@@ -2027,11 +2045,15 @@
     my $context = $self->{context};
     my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time, $bind_values);
     my $loglevel = 1;
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     if (defined $dbh) {
         my ($column, %serializer, $serializer_name, $serializer, $type, 
$sqltype);
         my $column_defs = $self->{table}{$table}{column};
@@ -2105,6 +2127,10 @@
         }
     }
     $nrows = 1 if ($nrows);
+    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: nrows [$nrows] ($elapsed_time sec) 
$DBI::errstr\n";
@@ -2129,12 +2155,16 @@
     my $context = $self->{context};
     my $context_options = $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, $bind_values, $row);
     my $loglevel = 1;
     if ($debug_sql) {
         $timer = $self->_get_timer();
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     if (ref($rows) eq "ARRAY") {
         $sql = $self->_mk_insert_row_sql($table, $cols);
         foreach $row (@$rows) {
@@ -2242,6 +2272,10 @@
             }
         }
     }
+    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: nrows [$nrows] ($elapsed_time 
sec)\n";
@@ -2259,8 +2293,10 @@
     my $sql = $self->_mk_delete_sql($table, $params, $cols, $row, $options);
     $self->{sql} = $sql;
 
-    my $context_options = $self->{context}{options};
+    my $context = $self->{context};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -2270,6 +2306,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     my $retval = 0;
     my $dbh = $self->{dbh};
     if (defined $dbh) {
@@ -2283,6 +2322,10 @@
             die $e;
         }
     }
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_write} += $retval+0;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
         print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval] ($elapsed_time 
sec) $DBI::errstr\n";
@@ -2317,10 +2360,14 @@
     my $context = $self->{context};
     my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     my $retval = 0;
     my $dbh = $self->{dbh};
     if (defined $dbh) {
@@ -2378,6 +2425,10 @@
             die $e;
         }
     }
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_write} += $retval;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
         print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval] ($elapsed_time 
sec) $DBI::errstr\n";
@@ -2396,8 +2447,10 @@
     my $sql = $self->_mk_delete_row_sql(@_);
     $self->{sql} = $sql;
 
-    my $context_options = $self->{context}{options};
+    my $context = $self->{context};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -2407,6 +2460,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     my $retval = 0;
     my $dbh = $self->{dbh};
     if (defined $dbh) {
@@ -2420,6 +2476,10 @@
             die $e;
         }
     }
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_write} += $retval;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
         print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval] ($elapsed_time 
sec) $DBI::errstr\n";
@@ -2438,8 +2498,10 @@
     my $sql = $self->_mk_delete_rows_sql(@_);
     $self->{sql} = $sql;
 
-    my $context_options = $self->{context}{options};
+    my $context = $self->{context};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -2449,6 +2511,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     my $retval = 0;
     my $dbh = $self->{dbh};
 #TODO: Make checks consistant. Make App::Repo level function handle connect 
verification
@@ -2463,6 +2528,10 @@
             die $e;
         }
     }
+    if ($profiler) {
+        $context->profile_stop("db");
+        $context->{profile_stats}{db}{nrows_write} += $retval;
+    }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
         print $App::DEBUG_FILE "DEBUG_SQL: retval [$retval] ($elapsed_time 
sec) $DBI::errstr\n";
@@ -2481,8 +2550,10 @@
     my $dbh = $self->{dbh};
     my $retval = 0;
 
-    my $context_options = $self->{context}{options};
+    my $context   = $self->{context};
+    my $context_options = $context->{options};
     my $debug_sql = $context_options->{debug_sql};
+    my $profiler  = $context_options->{"app.Context.profiler"};
     my ($timer, $elapsed_time);
     if ($debug_sql) {
         $timer = $self->_get_timer();
@@ -2493,6 +2564,9 @@
     if ($context_options->{explain_sql}) {
         $self->explain_sql($sql);
     }
+    if ($profiler) {
+        $context->profile_start("db");
+    }
     if (defined $dbh) {
         my $continue = 1;
         my $tries = 1;
@@ -2530,6 +2604,15 @@
             }
         }
     }
+    if ($profiler) {
+        $context->profile_stop("db");
+        if ($retval && ref($retval)) {
+            $context->{profile_stats}{db}{nrows_write} += ($#$retval + 1);
+        }
+        else {
+            $context->{profile_stats}{db}{nrows_read}  += $retval;
+        }
+    }
     if ($debug_sql) {
         my $nrows = 0;
         if ($retval) {

Reply via email to