From: Brandon L. Black Date: Thu, 29 Jun 2006 00:44:39 +0000 (+0000) Subject: turn off automatic columns_info_for by default. Can be enabled per-source with __PAC... X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6eda9bcf16e70eb911ffccd7efec6df195222734;hp=5db49b9aee9a586a76b37fd950bb9bc22bd5e985;p=dbsrgits%2FDBIx-Class-Historic.git turn off automatic columns_info_for by default. Can be enabled per-source with __PACKAGE__->load_column_info_from_storage --- diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 9fd7a2a..2cf6a97 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -12,7 +12,7 @@ __PACKAGE__->load_components(qw/AccessorGroup/); __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/); __PACKAGE__->mk_group_accessors('component_class' => qw/resultset_class result_class source_name/); @@ -181,6 +181,7 @@ sub column_info { 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 ) { @@ -201,6 +202,15 @@ sub column_info { return $self->_columns->{$column}; } +=head2 load_column_info_from_storage + +Enables the on-demand automatic loading of the above column +metadata from storage as neccesary. + +=cut + +sub load_column_info_from_storage { shift->column_info_from_storage(1) } + =head2 columns my @column_names = $obj->columns; diff --git a/lib/DBIx/Class/ResultSourceProxy.pm b/lib/DBIx/Class/ResultSourceProxy.pm index f174d75..591927f 100644 --- a/lib/DBIx/Class/ResultSourceProxy.pm +++ b/lib/DBIx/Class/ResultSourceProxy.pm @@ -35,6 +35,9 @@ sub column_info { return $self->result_source_instance->column_info($column); } +sub load_column_info_from_storage { + shift->result_source_instance->load_column_info_from_storage; +} sub columns { return shift->result_source_instance->columns(@_); diff --git a/t/60core.t b/t/60core.t index a4d97d0..710f636 100644 --- a/t/60core.t +++ b/t/60core.t @@ -274,6 +274,7 @@ ok(!$@, "stringify to false value doesn't cause error"); # test column_info { $schema->source("Artist")->{_columns}{'artistid'} = {}; + $schema->source("Artist")->load_column_info_from_storage; my $typeinfo = $schema->source("Artist")->column_info('artistid'); is($typeinfo->{data_type}, 'INTEGER', 'column_info ok'); diff --git a/t/72pg.t b/t/72pg.t index f0bb3f8..f393a9a 100644 --- a/t/72pg.t +++ b/t/72pg.t @@ -15,6 +15,7 @@ use DBICTest; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('casecheck'); __PACKAGE__->add_columns(qw/id name NAME uc_name/); + __PACKAGE__->load_column_info_from_storage; __PACKAGE__->set_primary_key('id'); }