From: Arthur Axel "fREW" Schmidt Date: Sat, 23 Oct 2010 20:30:26 +0000 (+0000) Subject: Add EXECUTING for clarity of long running SQL X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=416cdb2e2ae9bd3ca942ce91aa5aae13409f2452;p=scpubgit%2FQ-Branch.git Add EXECUTING for clarity of long running SQL --- diff --git a/Changes b/Changes index 45f40be..a712212 100644 --- a/Changes +++ b/Changes @@ -2,6 +2,7 @@ Revision history for SQL::Abstract - Hide bulk inserts from DBIx::Class - Highlight transaction keywords + - Add EXECUTING for clarity of long running SQL revision 1.69 2010-10-22 ---------------------------- diff --git a/lib/DBIx/Class/Storage/Debug/PrettyPrint.pm b/lib/DBIx/Class/Storage/Debug/PrettyPrint.pm index affb422..8569dbc 100644 --- a/lib/DBIx/Class/Storage/Debug/PrettyPrint.pm +++ b/lib/DBIx/Class/Storage/Debug/PrettyPrint.pm @@ -8,12 +8,24 @@ use base 'DBIx::Class::Storage::Statistics'; use SQL::Abstract::Tree; __PACKAGE__->mk_group_accessors( simple => '_sqlat' ); +__PACKAGE__->mk_group_accessors( simple => 'clear_line_str' ); +__PACKAGE__->mk_group_accessors( simple => 'executing_str' ); sub new { my $class = shift; + my $args = shift; - my $sqlat = SQL::Abstract::Tree->new(shift @_); + my $clear_line = $args->{clear_line} || "\r"; + my $executing = $args->{executing} || eval { require Term::ANSIColor } ? do { + my $c = \&Term::ANSIColor::color; + $c->('blink white on_black') . 'EXECUTING...' . $c->('reset');; + } : 'EXECUTING...'; +; + + my $sqlat = SQL::Abstract::Tree->new($args); my $self = $class->next::method(@_); + $self->clear_line_str($clear_line); + $self->executing_str($executing); $self->_sqlat($sqlat); @@ -25,6 +37,9 @@ sub print { my $string = shift; my $bindargs = shift || []; + my ($lw, $lr); + ($lw, $string, $lr) = $string =~ /^(\s*)(.+?)(\s*)$/s; + return if defined $bindargs && defined $bindargs->[0] && $bindargs->[0] eq q('__BULK_INSERT__'); @@ -33,12 +48,12 @@ sub print { # DBIC pre-quotes bindargs $bindargs = [map { s/^'//; s/'$//; $_ } @{$bindargs}] if $use_placeholders; - my $formatted = $self->_sqlat->format($string, $bindargs) . "\n"; + my $formatted = $self->_sqlat->format($string, $bindargs); $formatted = "$formatted: " . join ', ', @{$bindargs} unless $use_placeholders; - $self->next::method($formatted, @_); + $self->next::method("$lw$formatted$lr", @_); } sub query_start { @@ -50,7 +65,15 @@ sub query_start { return; } - $self->print($string, \@bind); + $string =~ s/\s+$//; + + $self->print("$string\n", \@bind); + + $self->debugfh->print($self->executing_str) +} + +sub query_end { + $_[0]->debugfh->print($_[0]->clear_line_str); } 1;