X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FWithDSN.pm;h=f26eb3c21763148b5b106a79e3d01d09141c544b;hb=23b2c49b17262ecf84307c9ffba88ed38ecc90cb;hp=a6fe522ee9294b68df6df82814a2613cafb1eeb0;hpb=0bd8e0585b592d2583f28b6922b47afa78559cf4;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm b/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm index a6fe522..f26eb3c 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm @@ -4,6 +4,7 @@ use Moose::Role; use Scalar::Util 'reftype'; requires qw/_query_start/; +use Try::Tiny; use namespace::clean -except => 'meta'; =head1 NAME @@ -32,7 +33,7 @@ Add C to debugging output. around '_query_start' => sub { my ($method, $self, $sql, @bind) = @_; - my $dsn = eval { $self->dsn } || $self->_dbi_connect_info->[0]; + my $dsn = (try { $self->dsn }) || $self->_dbi_connect_info->[0]; my($op, $rest) = (($sql=~m/^(\w+)(.+)$/),'NOP', 'NO SQL'); my $storage_type = $self->can('active') ? 'REPLICANT' : 'MASTER'; @@ -41,6 +42,9 @@ around '_query_start' => sub { if ((reftype($dsn)||'') ne 'CODE') { "$op [DSN_$storage_type=$dsn]$rest"; } + elsif (my $id = try { $self->id }) { + "$op [$storage_type=$id]$rest"; + } else { "$op [$storage_type]$rest"; }