From: Matt S Trout Date: Fri, 20 Feb 2009 08:22:47 +0000 (+0000) Subject: Merge 'multi_stuff' into 'trunk' X-Git-Tag: v0.08240~100 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=dfb45ec431de0598c0222aa067b9b9380143d7f8;hp=e0cdf2cbe02e576686d9281c1eaac8456086cf39;p=dbsrgits%2FDBIx-Class.git Merge 'multi_stuff' into 'trunk' --- diff --git a/Changes b/Changes index 9d7887b..a068719 100644 --- a/Changes +++ b/Changes @@ -23,6 +23,7 @@ Revision history for DBIx::Class - PG array datatype supported with SQLA >= 1.50 - insert should use store_column, not set_column to avoid marking clean just-stored values as dirty. New test for this (groditi) + - regression test for source_name (groditi) 0.08099_05 2008-10-30 21:30:00 (UTC) - Rewritte of Storage::DBI::connect_info(), extended with an diff --git a/Makefile.PL b/Makefile.PL index f590d45..38a89db 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,6 +1,7 @@ use inc::Module::Install 0.67; use strict; use warnings; +use POSIX (); use 5.006001; # delete this line if you want to send patches for earlier. @@ -119,9 +120,14 @@ EOW exit 0; } else { - wait(); + eval { + local $SIG{ALRM} = sub { die "timeout\n" }; + alarm 5; + wait(); + alarm 0; + }; my $sig = $? & 127; - if ($sig == 11) { + if ($@ || $sig == POSIX::SIGSEGV) { warn (<result_source->schema->class($rel_obj->{class}); + my $f_class = $rel_obj->{class}; $self->throw_exception( "Object $f_obj isn't a ".$f_class ) unless Scalar::Util::blessed($f_obj) and $f_obj->isa($f_class); } diff --git a/t/resultset/as_query.t b/t/resultset/as_query.t index 2813b1d..b573606 100644 --- a/t/resultset/as_query.t +++ b/t/resultset/as_query.t @@ -22,7 +22,7 @@ my $cdrs = $schema->resultset('CD'); is_same_sql_bind( $query, \@bind, - "SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me", [], + "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me)", [], ); } @@ -34,7 +34,7 @@ $art_rs = $art_rs->search({ name => 'Billy Joel' }); is_same_sql_bind( $query, \@bind, - "SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( name = ? )", + "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( name = ? ))", [ [ name => 'Billy Joel' ] ], ); } @@ -47,7 +47,7 @@ $art_rs = $art_rs->search({ rank => 2 }); is_same_sql_bind( $query, \@bind, - "SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( ( rank = ? ) AND ( name = ? ) )", + "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( ( ( rank = ? ) AND ( name = ? ) ) ) )", [ [ rank => 2 ], [ name => 'Billy Joel' ] ], ); } @@ -60,7 +60,7 @@ my $rscol = $art_rs->get_column( 'charfield' ); is_same_sql_bind( $query, \@bind, - "SELECT me.charfield FROM artist me WHERE ( ( ( rank = ? ) AND ( name = ? ) ) )", + "(SELECT me.charfield FROM artist me WHERE ( ( ( rank = ? ) AND ( name = ? ) ) ) )", [ [ rank => 2 ], [ name => 'Billy Joel' ] ], ); } diff --git a/t/search/subquery.t b/t/search/subquery.t index 47e0746..1a6861a 100644 --- a/t/search/subquery.t +++ b/t/search/subquery.t @@ -10,7 +10,7 @@ use lib qw(t/lib); use DBICTest; use DBIC::SqlMakerTest; -plan tests => 4; +plan tests => 5; my $schema = DBICTest->init_schema(); my $art_rs = $schema->resultset('Artist'); @@ -74,6 +74,26 @@ TODO: { ); } +# nested from +TODO: { + local $TODO = "'from' doesn't work with as_query yet."; + my $art_rs2 = $schema->resultset('Artist')->search({}, + { + from => [ { 'me' => 'artist' }, + [ { 'cds' => $cdrs->search({},{ 'select' => [\'me.artist as cds_artist' ]})->as_query }, + { 'me.artistid' => 'cds_artist' } ] ] + }); + + my $arr = $art_rs2->as_query; + my ($query, @bind) = @{$$arr}; + is_same_sql_bind( + $query, \@bind, + "SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me JOIN (SELECT me.artist as cds_artist FROM cd me) cds ON me.artistid = cds_artist", [] + ); + + +} + { my $rs = $cdrs->search({ year => {