From 412da5f65814c6f430f293ca18f16fd21edf1f5c Mon Sep 17 00:00:00 2001 From: Leo Gordon <lg4@ebi.ac.uk> Date: Tue, 28 Jan 2014 14:23:43 +0000 Subject: [PATCH] ObjectAdaptor is now overflow-aware and can store longer blobs transparently --- modules/Bio/EnsEMBL/Hive/DBSQL/ObjectAdaptor.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/Bio/EnsEMBL/Hive/DBSQL/ObjectAdaptor.pm b/modules/Bio/EnsEMBL/Hive/DBSQL/ObjectAdaptor.pm index 8d14c91b8..75c16822a 100644 --- a/modules/Bio/EnsEMBL/Hive/DBSQL/ObjectAdaptor.pm +++ b/modules/Bio/EnsEMBL/Hive/DBSQL/ObjectAdaptor.pm @@ -49,9 +49,18 @@ sub object_class { sub slicer { # take a slice of the object (if only we could inline in Perl!) my ($self, $object, $fields) = @_; - my $autoinc_id = $self->autoinc_id(); - - return [ map { ($_ eq $autoinc_id) ? $object->dbID() : $object->$_() } @$fields ]; + my $autoinc_id = $self->autoinc_id(); + my $overflow_limit = $self->overflow_limit(); + + return [ map { ($_ eq $autoinc_id) + ? $object->dbID() + : eval { my $value = $object->$_(); + my $ol = $overflow_limit->{$_}; + (defined($ol) and length($value)>$ol) + ? $self->db->get_AnalysisDataAdaptor()->store_if_needed( $value ) + : $value + } + } @$fields ]; } -- GitLab