Raw content of Bio::EnsEMBL::Compara::DBSQL::SequenceAdaptor
package Bio::EnsEMBL::Compara::DBSQL::SequenceAdaptor;
use strict;
use Bio::EnsEMBL::DBSQL::BaseAdaptor;
use Bio::EnsEMBL::Utils::Argument qw(rearrange);
use Bio::EnsEMBL::Utils::Exception qw(throw warning);
our @ISA = qw(Bio::EnsEMBL::DBSQL::BaseAdaptor);
sub fetch_by_dbID {
my ($self, $sequence_id) = @_;
my $sql = "SELECT sequence.sequence FROM sequence WHERE sequence_id = ?";
my $sth = $self->prepare($sql);
$sth->execute($sequence_id);
my ($sequence) = $sth->fetchrow_array();
$sth->finish();
return $sequence;
}
#
# STORE METHODS
#
################
sub store {
my ($self, $sequence) = @_;
my $seqID;
return 0 unless($sequence);
my $dcs = $self->dbc->disconnect_when_inactive();
$self->dbc->disconnect_when_inactive(0);
#27/4/2009 kb3 Commented out the following lines so that we no longer check if
#a sequence already exists since this can take a very long time for the 2X
#genomes. May end up with duplicate sequences but we expect this to be rare.
# $self->dbc->do("LOCK TABLE sequence WRITE");
#my $sth = $self->prepare("SELECT sequence_id FROM sequence WHERE sequence = ?");
#$sth->execute($sequence);
#($seqID) = $sth->fetchrow_array();
#$sth->finish;
#unless($seqID) {
my $length = length($sequence);
my $sth2 = $self->prepare("INSERT INTO sequence (sequence, length) VALUES (?,?)");
$sth2->execute($sequence, $length);
$seqID = $sth2->{'mysql_insertid'};
$sth2->finish;
#}
#$self->dbc->do("UNLOCK TABLES");
$self->dbc->disconnect_when_inactive($dcs);
return $seqID;
}
1;