X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSetColumn.pm;h=bde5f9a576c9cb97ae159ac336dd354532930e6d;hb=7474ed3b192693baa28d2f52de502f0ec3e8ac4e;hp=a5141390d93b118e202de3c6e4f3f329cc41a1bc;hpb=1b822bd3e15476666e97d9a95754f123410b3c56;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSetColumn.pm b/lib/DBIx/Class/ResultSetColumn.pm index a514139..bde5f9a 100644 --- a/lib/DBIx/Class/ResultSetColumn.pm +++ b/lib/DBIx/Class/ResultSetColumn.pm @@ -151,12 +151,10 @@ one value. =cut sub next { - my $self = shift; + #my $self = shift; # using cursor so we don't inflate anything - my ($row) = $self->_resultset->cursor->next; - - return $row; + ($_[0]->_resultset->cursor->next)[0]; } =head2 all @@ -178,10 +176,10 @@ than result objects. =cut sub all { - my $self = shift; + #my $self = shift; # using cursor so we don't inflate anything - return map { $_->[0] } $self->_resultset->cursor->all; + map { $_->[0] } $_[0]->_resultset->cursor->all; } =head2 reset @@ -202,9 +200,10 @@ Much like L. =cut sub reset { - my $self = shift; - $self->_resultset->cursor->reset; - return $self; + #my $self = shift; + + $_[0]->_resultset->reset; + $_[0]; } =head2 first @@ -224,14 +223,13 @@ Much like L but just returning the one value. =cut -sub first { - my $self = shift; +sub first :DBIC_method_is_indirect_sugar { + DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call; # using cursor so we don't inflate anything - $self->_resultset->cursor->reset; - my ($row) = $self->_resultset->cursor->next; - - return $row; + my $cursor = $_[0]->_resultset->cursor; + $cursor->reset; + ($cursor->next)[0]; } =head2 single @@ -251,14 +249,14 @@ is issued before discarding the cursor. =cut sub single { - my $self = shift; + #my $self = shift; - my $attrs = $self->_resultset->_resolved_attrs; - my ($row) = $self->_resultset->result_source->schema->storage->select_single( - $attrs->{from}, $attrs->{select}, $attrs->{where}, $attrs - ); + my $rs = $_[0]->_resultset; - return $row; + my $attrs = $rs->_resolved_attrs; + ($rs->result_source->schema->storage->select_single( + $attrs->{from}, $attrs->{select}, $attrs->{where}, $attrs + ))[0]; } =head2 min @@ -410,9 +408,11 @@ value. Produces the following SQL: =cut -sub func { - my ($self,$function) = @_; - my $cursor = $self->func_rs($function)->cursor; +sub func :DBIC_method_is_indirect_sugar{ + DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call; + + #my ($self,$function) = @_; + my $cursor = $_[0]->func_rs($_[1])->cursor; if( wantarray ) { DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_WANTARRAY and my $sog = fail_on_internal_wantarray; @@ -448,7 +448,21 @@ sub func_rs { $rs = $rs->as_subselect_rs; } - $rs->search( undef, { + # FIXME - remove at some point in the future (2018-ish) + wantarray + and + carp_unique( + 'Starting with DBIC@0.082900 func_rs() always returns a ResultSet ' + . 'instance regardless of calling context. Please force scalar() context to ' + . 'silence this warning' + ) + and + DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_WANTARRAY + and + my $sog = fail_on_internal_wantarray + ; + + $rs->search_rs( undef, { columns => { $self->{_as} => { $function => $select } } } ); }