LICENSE
Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute Copyright [2016-2024] EMBL-European Bioinformatics Institute
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
CONTACT
Please email comments or questions to the public Ensembl
developers list at <http://lists.ensembl.org/mailman/listinfo/dev>.
Questions may also be sent to the Ensembl help desk at
<http://www.ensembl.org/Help/Contact>.
NAME
Bio::EnsEMBL::DBSQL::BaseAdaptor - Base Adaptor for DBSQL adaptors
SYNOPSIS
# base adaptor provides
# SQL prepare function
$adaptor->prepare("sql statement");
# get of root DBAdaptor object
$adaptor->db();
# constructor, ok for inheritence
$adaptor = Bio::EnsEMBL::DBSQL::SubClassOfBaseAdaptor->new($dbobj);
DESCRIPTION
This is a true base class for Adaptors in the Ensembl DBSQL system.
Adaptors are expected to have the following functions
$obj = $adaptor->fetch_by_dbID($internal_id);
which builds the object from the primary key of the object. This function is crucial because it allows adaptors to collaborate relatively independently of each other - in other words, we can change the schema under one adaptor without too many knock on changes through the other adaptors.
Most adaptors will also have
$dbid = $adaptor->store($obj);
which stores the object. Currently the storing of an object also causes the objects to set
$obj->dbID();
correctly and attach the adaptor.
Other fetch functions go by the convention of
@object_array = @{ $adaptor->fetch_all_by_XXXX($arguments_for_XXXX) };
sometimes it returns an array ref denoted by the 'all' in the name of the method, sometimes an individual object. For example
$gene = $gene_adaptor->fetch_by_stable_id($stable_id);
or
@fp = @{ $simple_feature_adaptor->fetch_all_by_Slice($slice) };
Occassionally adaptors need to provide access to lists of ids. In this case the convention is to go list_XXXX, such as
@gene_ids = @{ $gene_adaptor->list_geneIds() };
(note: this method is poorly named)
new
Arg [1] : Bio::EnsEMBL::DBSQL::DBConnection $dbobj
Example : $adaptor = new AdaptorInheritedFromBaseAdaptor($dbobj);
Description: Creates a new BaseAdaptor object. The intent is that this
constructor would be called by an inherited superclass either
automatically or through $self->SUPER::new in an overridden
new method.
Returntype : Bio::EnsEMBL::DBSQL::BaseAdaptor
Exceptions : none
Caller : Bio::EnsEMBL::DBSQL::DBConnection
Status : Stable
prepare
Arg [1] : string $string
a SQL query to be prepared by this adaptors database
Example : $sth = $adaptor->prepare("select yadda from blabla")
Description: provides a DBI statement handle from the adaptor. A convenience
function so you dont have to write $adaptor->db->prepare all the
time
Returntype : DBI::StatementHandle
Exceptions : none
Caller : Adaptors inherited from BaseAdaptor
Status : Stable
db
Arg [1] : (optional) Bio::EnsEMBL::DBSQL::DBAdaptor $obj
the database this adaptor is using.
Example : $db = $adaptor->db();
Description: Getter/Setter for the DatabaseConnection that this adaptor is
using.
Returntype : Bio::EnsEMBL::DBSQL::DBAdaptor
Exceptions : none
Caller : Adaptors inherited from BaseAdaptor
Status : Stable
dbc
Arg [1] : (optional) Bio::EnsEMBL::DBSQL::DBConnection $obj
the database this adaptor is using.
Example : $db = $adaptor->db();
Description: Getter/Setter for the DatabaseConnection that this adaptor is
using.
Returntype : Bio::EnsEMBL::DBSQL::DBConnection
Exceptions : none
Caller : Adaptors inherited from BaseAdaptor
Status : Stable
is_multispecies
Arg [1] : (optional) boolean $arg
Example : if ($adaptor->is_multispecies()) { }
Description: Getter/Setter for the is_multispecies boolean of
to use for this adaptor.
Returntype : boolean
Exceptions : none
Caller : general
Status : Stable
species_id
Arg [1] : (optional) int $species_id
The internal ID of the species in a multi-species database.
Example : $db = $adaptor->db();
Description: Getter/Setter for the internal ID of the species in a
multi-species database. The default species ID is 1.
Returntype : Integer
Exceptions : none
Caller : Adaptors inherited from BaseAdaptor
Status : Stable
bind_param_generic_fetch
Arg [1] : (optional) scalar $param
This is the parameter to bind
Arg [2] : (optional) int $sql_type
Type of the parameter (from DBI (:sql_types))
Example : $adaptor->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
$adaptor->generic_fetch();
Description: When using parameters for the query, will call the bind_param to avoid
some security issues. If there are no arguments, will return the bind_parameters
ReturnType : listref
Exceptions: if called with one argument
generate_in_constraint
Arg [1] : ArrayRef or Scalar $list
List or a single value of items to be pushed into an IN statement
Arg [2] : Scalar $column
Column this IN statement is being applied to. Please fully resolve the
column.
Arg [3] : Scalar $param_type
Data type which should be used when binding. Please use DBI data type symbols
Arg [4] : Scalar boolean $inline_variables
Boolean to control if variables are inlined in the constraint. If
false values are bound via bind_param_generic_fetch() (the default behaviour).
Description : Used internally to generate a SQL constraint to restrict a query by an IN statement.
The code generates the complete IN statement.
Returntype : String
Exceptions : If no list is supplied, the list of values is empty or no data type was given
Caller : general
generic_fetch
Arg [1] : (optional) string $constraint
An SQL query constraint (i.e. part of the WHERE clause)
Arg [2] : (optional) Bio::EnsEMBL::AssemblyMapper $mapper
A mapper object used to remap features
as they are retrieved from the database
Arg [3] : (optional) Bio::EnsEMBL::Slice $slice
A slice that features should be remapped to
Example : $fts = $a->generic_fetch('contig_id in (1234, 1235)');
Description: Performs a database fetch and returns feature objects in
contig coordinates.
Returntype : listref of Bio::EnsEMBL::SeqFeature in contig coordinates
Exceptions : Thrown if there is an issue with querying the data
Caller : BaseFeatureAdaptor, ProxyDnaAlignFeatureAdaptor::generic_fetch
Status : Stable
generic_count
Arg [1] : (optional) string $constraint
An SQL query constraint (i.e. part of the WHERE clause)
Example : $number_feats = $a->generic_count('contig_id in (1234, 1235)');
Description: Performs a database fetch and returns a count of those features
found. This is analagous to C<generic_fetch()>
Returntype : Integer count of the elements.
Exceptions : Thrown if there is an issue with querying the data
fetch_by_dbID
Arg [1] : int $id
The unique database identifier for the feature to be obtained
Example : $feat = $adaptor->fetch_by_dbID(1234));
$feat = $feat->transform('contig');
Description: Returns the feature created from the database defined by the
the id $id. The feature will be returned in its native
coordinate system. That is, the coordinate system in which it
is stored in the database. In order to convert it to a
particular coordinate system use the transfer() or transform()
method. If the feature is not found in the database then
undef is returned instead
Returntype : Bio::EnsEMBL::Feature or undef
Exceptions : thrown if $id arg is not provided
does not exist
Caller : general
Status : Stable
fetch_all_by_dbID_list
Arg [1] : listref of integers $id_list
The unique database identifiers for the features to
be obtained.
Arg [2] : optional - Bio::EnsEMBL::Slice to map features onto.
Example : @feats = @{$adaptor->fetch_all_by_dbID_list([1234, 2131, 982]))};
Description: Returns the features created from the database
defined by the the IDs in contained in the provided
ID list $id_list. The features will be returned
in their native coordinate system. That is, the
coordinate system in which they are stored in the
database. In order to convert the features to a
particular coordinate system use the transfer() or
transform() method. If none of the features are
found in the database a reference to an empty list is
returned.
Returntype : listref of Bio::EnsEMBL::Features
Exceptions : thrown if $id arg is not provided
does not exist
Caller : general
Status : Stable
_uncached_fetch_all_by_id_list
Arg [1] : listref of IDs
Arg [2] : (optional) Bio::EnsEMBL::Slice $slice
A slice that features should be remapped to
Arg [3] : String describing the ID type.
Valid values include dbID and stable_id. dbID is an alias for
the primary key, while other names map directly to table columns
of the Feature this adaptor manages.
Arg [4] : Boolean $numeric
Indicates if the incoming data is to be processed as a numeric
or as a String. If arg [3] was set to dbID then we default this to
be true. If arg [3] was set to stable_id then we default this to
be false.
When not using a standard arg[3] the IDs are assumed to be Strings.
Arg [5] : Integer $max_size
Control the maximum number of IDs sent to a database in a single
query. Defaults to 2K for Strings and 16K for integers. Only
provide if you know *exactly* why you need to edit it.
Example : $list_of_features = $adaptor->_uncached_fetch_all_by_id_list(
[qw(ENSG00000101321 ENSG00000101346 ENSG00000101367)],
undef,
"stable_id", 0); #using strings
# Numeric set to true because we are using numerics
$list_of_features = $adaptor->_uncached_fetch_all_by_id_list(
[1,2,3,4],
undef,
"dbID", 1);
# Numeric defaults to true because we are querying using dbID
$list_of_features = $adaptor->_uncached_fetch_all_by_id_list(
[1,2,3,4],
undef,
"dbID");
Description: This is a generic method used to fetch lists of features by IDs.
It avoids caches, meaning it is best suited for block fetching.
See fetch_all_by_dbID_list() for more info.
Returntype : ArrayRef of Bio::EnsEMBL::Feature
Exceptions : Thrown if a list of IDs is not supplied.
Caller : BaseFeatureAdaptor, BaseAdaptor and derived classes.
last_insert_id
Arg [1] : (optional) $field the name of the field the inserted ID was pushed
into
Arg [2] : (optional) HashRef used to pass extra attributes through to the
DBD driver
Arg [3] : (optional) $table the name of the table to use if the adaptor
does not implement C<_tables()>
Description : Delegating method which uses DBI to extract the last inserted
identifier. If using MySQL we just call the DBI method
L<DBI::last_insert_id()> since MySQL ignores any extra
arguments. See L<DBI> for more information about this
delegated method.
Example : my $id = $self->last_insert_id('my_id'); my $other_id = $self->last_insert_id();
Returntype : Scalar or undef
insert_ignore_clause
_id_cache
Description : Used to return an instance of a support BaseCache module
which can be used to speed up object access. The method
also respects the DBAdaptor's no_cache() flag and will
return undef in those situations
Example : my $cache = $self->_id_cache();
Returntype : Bio::EnsEMBL::DBSQL::Support::BaseCache
_no_id_cache
Description : Flags if the ID based caching is active or not. This could be
due to the adaptor not wanting to cache or because of
a global no_cache() flag on the DBAdaptor instance
Returntype : Boolean
ignore_cache_override
Description : Method to interfere with no_cache directive from Registry on
a per adaptor basis. This method should be called after new()
in order to trigger the _build_id_cache at first query.
Example : $adaptor->ignore_cache_override(1);
Returntype : Boolean
schema_version
Description : Returns the schema version of the currently connected
DBAdaptor. The subroutine also caches this value so
repeated calls continue to be speedy.
Example : $adaptor->schema_version();
Returntype : Integer