From: Rafael Kitover Date: Tue, 6 Mar 2012 23:31:31 +0000 (-0500) Subject: all tests pass X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a1e5179eed386a9866151ea73c13e2df52807e01;p=dbsrgits%2FDBIx-Class.git all tests pass --- diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index 8806682..a80c4c5 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -1802,6 +1802,7 @@ sub _rs_update_delete { # at all. Tell SQLMaker to dequalify idents via a gross hack. my $cond = do { my $sqla = $rsrc->storage->sql_maker; + local $sqla->{FROM} = $rsrc; local $sqla->{_dequalify_idents} = 1; \[ $sqla->_recurse_where($self->{cond}) ]; }; diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index fe82fac..bfbe37f 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -11,7 +11,7 @@ use DBIx::Class::Carp; use Devel::GlobalDestruction; use Try::Tiny; use List::Util 'first'; -use Scalar::Util qw/blessed weaken isweak/; +use Scalar::Util qw/blessed weaken isweak refaddr/; use namespace::clean; use base qw/DBIx::Class/; @@ -1151,6 +1151,12 @@ clause contents. sub from { die 'Virtual method!' } +use overload + '""' => sub { my $name = $_[0]->from; return ref $name ? $$name : $name }, + '0+' => sub { refaddr($_[0]) }, + '==' => sub { refaddr($_[0]) == refaddr($_[1]) }, + fallback => 1; + =head2 schema =over 4 diff --git a/lib/DBIx/Class/SQLMaker.pm b/lib/DBIx/Class/SQLMaker.pm index 16c73cf..e929c93 100644 --- a/lib/DBIx/Class/SQLMaker.pm +++ b/lib/DBIx/Class/SQLMaker.pm @@ -93,7 +93,7 @@ sub __max_int () { 0x7FFFFFFF }; sub _quote { return undef if not defined $_[1]; - my $col = ( $_[0]{_dequalify_idents} and ! ref $_[1] ) + my ($col) = ( $_[0]{_dequalify_idents} and ! ref $_[1] ) ? $_[1] =~ / ([^\.]+) $ /x : $_[1] ; @@ -238,6 +238,7 @@ sub update { } sub delete { + local $_[0]->{FROM} = $_[1]; shift->next::method(@_); } diff --git a/lib/DBIx/Class/Storage/DBI.pm b/lib/DBIx/Class/Storage/DBI.pm index 68bb845..bec8a7a 100644 --- a/lib/DBIx/Class/Storage/DBI.pm +++ b/lib/DBIx/Class/Storage/DBI.pm @@ -1556,7 +1556,7 @@ sub _gen_sql_bind { my ($self, $op, $ident, $args) = @_; my ($sql, @bind) = $self->sql_maker->$op( - blessed($ident) ? $ident->from : $ident, + $ident, @$args, ); diff --git a/t/sqlmaker/alias_column.t b/t/sqlmaker/alias_column.t index c5b6b0f..1d70dd2 100644 --- a/t/sqlmaker/alias_column.t +++ b/t/sqlmaker/alias_column.t @@ -54,7 +54,7 @@ eval { is_same_sql_bind( $sql, \@bind, - "DELETE FROM bad_names_1 WHERE ( me.stupid_name = ? )", ["'2001'"], + "DELETE FROM bad_names_1 WHERE ( stupid_name = ? )", ["'2001'"], 'delete' );