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) {