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