X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FSector%2FDBI%2FReference.pm;fp=lib%2FDBM%2FDeep%2FSector%2FDBI%2FReference.pm;h=761f2688e57f5caf50d0ebea591a7db591d1f0d5;hb=1f1f7e243d8ac1a2bcc84aa838b29bb9fbb110b0;hp=7775ce8cf9310de5b28cb75ca3f41d3342f3fb6d;hpb=2467cee7a6b37a43d7cdd5b8c9bad5352318f6c3;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Sector/DBI/Reference.pm b/lib/DBM/Deep/Sector/DBI/Reference.pm index 7775ce8..761f268 100644 --- a/lib/DBM/Deep/Sector/DBI/Reference.pm +++ b/lib/DBM/Deep/Sector/DBI/Reference.pm @@ -15,9 +15,11 @@ sub _init { my $e = $self->engine; unless ( $self->offset ) { + my $classname = Scalar::Util::blessed( delete $self->{data} ); $self->{offset} = $self->engine->storage->write_to( refs => undef, - ref_type => $self->type, + ref_type => $self->type, + classname => $classname, ); } else { @@ -61,7 +63,6 @@ sub write_data { data_type => 'S', key => $args->{key}, value => $args->{value}{data}, - class => $args->{value}{class}, ); $args->{value}->reload; @@ -74,7 +75,6 @@ sub write_data { data_type => 'R', key => $args->{key}, value => $args->{value}{offset}, - class => $args->{value}{class}, ); } } @@ -98,7 +98,12 @@ sub delete_key { sub get_classname { my $self = shift; - return; + my ($rows) = $self->engine->storage->read_from( + 'refs', $self->offset, + qw( classname ), + ); + return unless @$rows; + return $rows->[0]{classname}; } sub data {