__PACKAGE__->mk_group_accessors('simple' => qw/_ordered_columns
_columns _primaries _unique_constraints name resultset_attributes
- schema from _relationships/);
+ schema from _relationships column_info_from_storage source_name/);
__PACKAGE__->mk_group_accessors('component_class' => qw/resultset_class
- result_class source_name/);
+ result_class/);
=head1 NAME
=head1 METHODS
+=pod
+
+=head2 new
+
+ $class->new();
+
+ $class->new({attribute_name => value});
+
+Creates a new ResultSource object. Not normally called directly by end users.
+
=cut
sub new {
my ($class, $attrs) = @_;
$class = ref $class if ref $class;
- my $new = bless({ %{$attrs || {}}, _resultset => undef }, $class);
+
+ my $new = { %{$attrs || {}}, _resultset => undef };
+ bless $new, $class;
+
$new->{resultset_class} ||= 'DBIx::Class::ResultSet';
$new->{resultset_attributes} = { %{$new->{resultset_attributes} || {}} };
$new->{_ordered_columns} = [ @{$new->{_ordered_columns}||[]}];
$new->{_relationships} = { %{$new->{_relationships}||{}} };
$new->{name} ||= "!!NAME NOT SET!!";
$new->{_columns_info_loaded} ||= 0;
+ if(!defined $new->column_info_from_storage) {
+ $new->{column_info_from_storage} = 1
+ }
return $new;
}
unless exists $self->_columns->{$column};
#warn $self->{_columns_info_loaded}, "\n";
if ( ! $self->_columns->{$column}{data_type}
+ and $self->column_info_from_storage
and ! $self->{_columns_info_loaded}
and $self->schema and $self->storage )
{
my $info;
my $lc_info;
# eval for the case of storage without table
- eval { $info = $self->storage->columns_info_for( $self->from, keys %{$self->_columns} ) };
+ eval { $info = $self->storage->columns_info_for( $self->from ) };
unless ($@) {
for my $realcol ( keys %{$info} ) {
$lc_info->{lc $realcol} = $info->{$realcol};
}
foreach my $col ( keys %{$self->_columns} ) {
- $self->_columns->{$col} = $info->{$col} || $lc_info->{lc $col};
+ $self->_columns->{$col} = { %{ $self->_columns->{$col}}, %{$info->{$col} || $lc_info->{lc $col}} };
}
}
}
return $self->_columns->{$column};
}
+=head2 column_info_from_storage
+
+Enables or disables the on-demand automatic loading of the above
+column metadata from storage as neccesary. Defaults to true in the
+current release, but will default to false in future releases starting
+with 0.08000. This is *deprecated*, and should not be used. It will
+be removed before 1.0.
+
+ __PACKAGE__->column_info_from_storage(0);
+ __PACKAGE__->column_info_from_storage(1);
+
=head2 columns
my @column_names = $obj->columns;
}
foreach (@cols) {
- undef $columns->{$_};
+ delete $columns->{$_};
};
$self->_ordered_columns(\@remaining);