NAME
Bio::DB::BioSQL::Oracle::BiosequenceAdaptorDriver - DESCRIPTION of Object
SYNOPSIS
Give standard usage here
DESCRIPTION
Describe the object here
FEEDBACK
Mailing Lists
User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to the Bioperl mailing list. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Reporting Bugs
Report bugs to the Bioperl bug tracking system to help us keep track of the bugs and their resolution. Bug reports can be submitted via email or the web:
bioperl-bugs@bioperl.org
http://bugzilla.open-bio.org/
AUTHOR - Hilmar Lapp
Email hlapp at gmx.net
Describe contact details here
CONTRIBUTORS
Additional contributors names and emails here
APPENDIX
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
insert_object
Title : insert_object
Usage :
Function: We override this here in order to omit the insert if there are
no values. This is because this entity basically represents a
derived class, and we may simply be dealing with the base class.
Example :
Returns : The primary key of the newly inserted record.
Args : A Bio::DB::BioSQL::BasePersistenceAdaptor derived object
(basically, it needs to implement dbh(), sth($key, $sth),
dbcontext(), and get_persistent_slots()).
The object to be inserted.
A reference to an array of foreign key objects; if any of those
foreign key values is NULL (some foreign keys may be nullable),
then give the class name.
update_object
Title : update_object
Usage :
Function: See parent class. We need to override this here because
there is no Biosequence object separate from PrimarySeq
that would hold a primary key. Hence, store()s cannot
recognize when the Biosequence for a Bioentry already
exists and needs to be updated, or when it needs to be
created. The way the code is currently wired, the presence
of the primary key (stemming from the bioentry) will always
trigger an update.
So, what we need to do here is check whether the entry already
exists and if not delegate to insert_object().
Example :
Returns : The number of updated rows
Args : A Bio::DB::BioSQL::BasePersistenceAdaptor derived object
(basically, it needs to implement dbh(), sth($key, $sth),
dbcontext(), and get_persistent_slots()).
The object to be updated.
A reference to an array of foreign key objects; if any of those
foreign key values is NULL (some foreign keys may be nullable),
then give the class name.
get_biosequence
Title : get_biosequence
Usage :
Function: Returns the actual sequence for a bioentry, or a substring of it.
Example :
Returns : A string (the sequence or subsequence)
Args : The calling persistence adaptor.
The primary key of the bioentry for which to obtain the sequence.
Optionally, start and end position if only a subsequence is to be
returned (for long sequences, obtaining the subsequence from the
database may be much faster than obtaining it from the complete
in-memory string, because the latter has to be retrieved first).
prepare
Title : prepare
Usage :
Function: Prepares a SQL statement and returns a statement handle.
We override this here in order to intercept the row update
statement. We'll edit the statement to replace the table
name with the fully qualified table the former points to if
it is in fact a synonym, not a real table. The reason is
that otherwise LOB support doesn't work properly if the LOB
parameter is wrapped in a call to NVL() (which it is) and
the table is only a synonym, not a physical table.
Example :
Returns : the return value of the DBI::prepare() call
Args : the DBI database handle for preparing the statement
the SQL statement to prepare (a scalar)
additional arguments to be passed to the dbh->prepare call
get_sth
Title : get_sth
Usage :
Function: Retrieves the (prepared) statement handle to bind
parameters for and to execute for the given operation.
By default this will use the supplied key to retrieve the
statement from the cache.
This method is here to provide an opportunity for
inheriting drivers to intercept the cached statement
retrieval in order to on-the-fly redirect the statement
execution to use a different statement than it would have
used by default.
This method may return undef if for instance there is no
appropriate statement handle in the cache. Returning undef
will trigger the calling method to construct a statement
from scratch.
Example :
Returns : a prepared statement handle if one is exists for the query,
and undef otherwise
Args : - the calling adaptor (a Bio::DB::BioSQL::BasePersistenceAdaptor
derived object
- the object for the persistence operation
- a reference to an array of foreign key objects; if any of
those foreign key values is NULL then the class name
- the key to the cache of the adaptor
- the operation requesting a cache key (a scalar basically
representing the name of the method)
_upd_sth2
Title : _upd_sth2
Usage : $obj->_upd_sth2($newval)
Function: Get/set the second version of the update row statement
as a prepared statement handle.
The 'second version' differs from the default in that the
set parameter for the SEQ column is not wrapped in a NVL()
call. This is needed to make it work for LOB values (values
longer than 4000 chars). However, this statement should
only be executed if the value is defined in order to
prevent unwanted un-sets of the value in the database.
This is a private method. Do not use from outside.
Example :
Returns : value of _upd_sth2 (a DBI statement handle)
Args : on set, new value (a DBI statement handle or undef, optional)
_upd_sth3
Title : _upd_sth3
Usage : $obj->_upd_sth3($newval)
Function: Get/set the third version of the update row statement
as a prepared statement handle.
The 'third version' differs from the default in that the
parameter for the SEQ column is not used for updating at
all, but instead is placed into the WHERE-section as a
dummy clause that always evaluates to true. This is needed
to protect existing LOB values longer than 4000 chars from
being updated to NULL, due to a bug in NVL().
This is a private method. Do not use from outside.
Example :
Returns : value of _upd_sth3 (a DBI statement handle)
Args : on set, new value (a DBI statement handle or undef, optional)