X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=262e2d8ca89c28ca7c366cb4492bd906c79b0955;hb=7ed4b48f691b78a3d832266d3a253a4d5c6a4837;hp=47fa905fc590bdaaf0db3e8cfb2e54f3404ad85d;hpb=d681f1bb0ca3b0611f11c082059827cfda7f9ac5;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 47fa905..262e2d8 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -1556,6 +1556,8 @@ sub _minimal_valueset_satisfying_constraint { my $self = shift; my $args = { ref $_[0] eq 'HASH' ? %{ $_[0] } : @_ }; + $args->{columns_info} ||= $self->columns_info; + my $vals = $self->storage->_extract_fixed_condition_columns( $args->{values}, ($args->{carp_on_nulls} ? 'consider_nulls' : undef ), @@ -1572,6 +1574,12 @@ sub _minimal_valueset_satisfying_constraint { else { $cols->{present}{$col} = 1; } + + $cols->{fc}{$col} = 1 if ( + ! ( $cols->{missing} || {})->{$col} + and + $args->{columns_info}{$col}{_filter_info} + ); } $self->throw_exception( sprintf ( "Unable to satisfy requested constraint '%s', missing values for column(s): %s", @@ -1579,6 +1587,12 @@ sub _minimal_valueset_satisfying_constraint { join (', ', map { "'$_'" } sort keys %{$cols->{missing}} ), ) ) if $cols->{missing}; + $self->throw_exception( sprintf ( + "Unable to satisfy requested constraint '%s', FilterColumn values not usable for column(s): %s", + $args->{constraint_name}, + join (', ', map { "'$_'" } sort keys %{$cols->{fc}}), + )) if $cols->{fc}; + if ( $cols->{undefined} and