Difference between revisions of "API:EPrints/Database/mysql"

From EPrints Documentation
Jump to: navigation, search
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<!-- Pod2Wiki=_preamble_  
 
<!-- Pod2Wiki=_preamble_  
This page has been automatically generated from the EPrints 3.2 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' comments will be lost.
+
This page has been automatically generated from the EPrints 3.4 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' comments will be lost.
  -->{{API}}{{Pod2Wiki}}{{API:Source|file=perl_lib/EPrints/Database/mysql.pm|package_name=EPrints::Database::mysql}}[[Category:API|MYSQL]][[Category:API:EPrints/Database|MYSQL]][[Category:API:EPrints/Database/mysql|MYSQL]]<div><!-- Edit below this comment -->
+
  -->{{API}}{{Pod2Wiki}}{{API:Source|file=EPrints/Database/mysql.pm|package_name=EPrints::Database::mysql}}[[Category:API|MYSQL]][[Category:API:EPrints/Database|MYSQL]]<div><!-- Edit below this comment -->
  
  
Line 19: Line 19:
 
MySQL database wrapper.
 
MySQL database wrapper.
  
 +
Foreign keys will be defined if you use a DB engine that supports them  (e.g. InnoDB).
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=head_synopsis -->
 +
===Synopsis===
 +
    $c-&gt;{dbdriver} = 'mysql';
 +
    # $c-&gt;{dbhost} = 'localhost';
 +
    # $c-&gt;{dbport} = '3316';
 +
    $c-&gt;{dbname} = 'myrepo';
 +
    $c-&gt;{dbuser} = 'bob';
 +
    $c-&gt;{dbpass} = 'asecret';
 +
    # $c-&gt;{dbengine} = 'InnoDB';
 +
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<span style='display:none'>User Comments</span>
Line 31: Line 50:
  
 
MySQL is (by default) lax about truncation.
 
MySQL is (by default) lax about truncation.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=head_constants -->
 +
==CONSTANTS==
 +
See [[API:EPrints/Database#CONSTANTS|EPrints::Database]].
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=head_instance_variables -->
 +
==INSTANCE VARIABLES==
 +
See [[API:EPrints/Database#INSTANCE_VARIABLES|EPrints::Database]].
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 52: Line 93:
  
 
  $version = $db-&gt;get_server_version
 
  $version = $db-&gt;get_server_version
Return the database server version.
+
Returns the database server version.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_mysql_version_from_dbh -->
 +
===mysql_version_from_dbh===
 +
 
 +
$version = $db-&gt;mysql_version_from_dbh
 +
Returns the MySQL database server version from handle <tt>$dbh</tt>.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_create -->
 +
===create===
 +
 
 +
$version = $db-&gt;create( $username, $password )
 +
Creates EPrints database as user with <tt>$username</tt> and <tt>$password</tt>.
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 65: Line 132:
  
 
  $n = $db-&gt;create_counters()
 
  $n = $db-&gt;create_counters()
Create and initialise the counters.
+
Creates and initialises the counters.
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 78: Line 145:
  
 
  $boolean = $db-&gt;has_table( $tablename )
 
  $boolean = $db-&gt;has_table( $tablename )
Return true if the a table of the given name exists in the database.
+
Returns <tt>true</tt> if the table with <tt>$tablename</tt> exists in the database.
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 90: Line 157:
 
===has_column===
 
===has_column===
  
  $boolean = $db-&gt;has_column( $tablename, $columnname )
+
  $boolean = $db-&gt;has_column( $table, $column )
Return true if the a table of the given name has a column named $columnname in the database.
+
Returns <tt>true</tt> if named <tt>$table</tt> has named <tt>$column</tt> in the  database.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_connect -->
 +
===connect===
 +
 
 +
$db-&gt;connect()
 +
Connects to the database.
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 104: Line 184:
  
 
  $success = $db-&gt;has_counter( $counter )
 
  $success = $db-&gt;has_counter( $counter )
Returns true if $counter exists.
+
Returns <tt>true</tt> if <tt>$counter</tt> exists.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_create_counter -->
 +
===create_counter===
 +
 
 +
$success = $db-&gt;create_counter( $name )
 +
Create and initialise to zero a new counter with <tt>$name</tt>.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_drop_counter -->
 +
===drop_counter===
 +
 
 +
$success = $db-&gt;drop_counter( $name )
 +
Destroy the counter named <tt>$name</tt>.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_remove_counters -->
 +
===remove_counters===
 +
 
 +
$success = $db-&gt;remove_counters
 +
Destroy all counters.
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 144: Line 263:
 
  $db-&gt;counter_reset( $counter )
 
  $db-&gt;counter_reset( $counter )
 
Return the counter. Use with cautiuon.
 
Return the counter. Use with cautiuon.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_default_charset -->
 +
===get_default_charset===
 +
 +
$charset = $db-&gt;get_default_charset
 +
Return the character set to use.  Always <tt>utf8</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_default_collation -->
 +
===get_default_collation===
 +
 +
$collation = $db-&gt;get_default_collation( $lang )
 +
Return the collation to use for language <tt>$lang</tt>. Always <tt>utf8_bin</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_primary_key -->
 +
===get_primary_key===
 +
 +
@columns = $db-&gt;get_primary_key( $table )
 +
Returns a list of column names that comprise the primary key for named named <tt>$table</tt>.
 +
 +
Returns an empty list if no primary key exists.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_number_of_keys -->
 +
===get_number_of_keys===
 +
 +
$num_keys = $db-&gt;get_number_of_keys( $table )
 +
Returns the number of columns which are keys (<tt>PRI</tt>, <tt>MUL</tt> or  <tt>UNI</tt>) for named <tt>$table</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_column_colation -->
 +
===get_column_colation===
 +
 +
$collation = $db-&gt;get_column_colation( $table, $column )
 +
Returns the collation for the named <tt>$column</tt> in the named <tt>$table</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_quote_identifier -->
 +
===quote_identifier===
 +
 +
$str = $db-&gt;quote_identifier( @parts )
 +
Quote a database identifier (e.g. table names). Multiple <tt>@parts</tt> will be joined by dots (<tt>.</tt>).
 +
 +
We'll do quote here, because {{API:PodLink|file=DBD/mysql#quote_identifier|package_name=DBD::mysql#quote_identifier|section=|text=DBD::mysql#quote_identifier}} is really  slow.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_prepare_regexp -->
 +
===prepare_regexp===
 +
 +
$sql = $db-&gt;prepare_regexp( $col, $value )
 +
Oracle use the syntax:
 +
 +
$col REGEXP $value
 +
 
 +
For the quoted regexp <tt>$value</tt> and the quoted column <tt>$col</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_sql_like -->
 +
===sql_like===
 +
 +
$sql = $db-&gt;sql_LIKE()
 +
Returns the syntactic glue to use when making a case-insensitive <tt>LIKE</tt> using <tt>utf8_general_ci</tt> collation.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_ci_lookup -->
 +
===ci_lookup===
 +
 +
$value = $db-&gt;ci_lookup( $field, $value )
 +
This is a hacky method to support case-insensitive lookup for usernames, emails, etc.  It returns the actual case-sensitive version of <tt>$value</tt> if there is a case-insensitive match for the <tt>$field</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_duplicate_error -->
 +
===duplicate_error===
 +
 +
$boolean = $db-&gt;duplicate_error()
 +
Returns a boolean for whether the database error is a duplicate error. Based on whether the {{API:PodLink|file=DBI#err|package_name=DBI#err|section=|text=DBI#err}} code is <tt>1062</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_duplicate_error -->
 +
===duplicate_error===
 +
 +
$boolean = $db-&gt;duplicate_error()
 +
Returns a boolean for whether the database error is a retry error. Based on whether the {{API:PodLink|file=DBI#err|package_name=DBI#err|section=|text=DBI#err}} code is <tt>2006</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_type_info -->
 +
===type_info===
 +
 +
$type_info = $db-&gt;type_info( $data_type )
 +
See {{API:PodLink|file=DBI|package_name=DBI|section=type_info|text=DBI/type_info}}.
 +
 +
Uses <tt>LONGTEXT</tt> with column size 2^31 for <tt>SQL_CLOB</tt>.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_index_name -->
 +
===index_name===
 +
 +
$name = $db-&gt;index_name( $table, @cols )
 +
Returns the name of the first index that starts with named columns <tt>@cols</tt> in the named <tt>$table</tt>.
 +
 +
Returns <tt>undef</tt> if no index exists.
 +
 +
Uses MySQL 4.0+ compatible <tt>SHOW INDEX</tt>.
 +
 +
This method gets the entire <tt>SHOW INDEX</tt> response and builds a  look-up table of keys with their <tt>ordered</tt> columns. This ensures even  if MySQL is weird and returns out of order results we won't break.
 +
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 +
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=head_see_also -->
 +
==SEE ALSO==
 +
[[API:EPrints/Database|EPrints::Database]]
  
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
Line 154: Line 469:
 
<!-- Pod2Wiki=head_copyright -->
 
<!-- Pod2Wiki=head_copyright -->
 
==COPYRIGHT==
 
==COPYRIGHT==
 +
{{API:Copyright}}
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<span style='display:none'>User Comments</span>

Latest revision as of 23:47, 11 January 2022

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


API: Core API

Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


NAME

EPrints::Database::mysql - custom database methods for MySQL DB

User Comments


DESCRIPTION

MySQL database wrapper.

Foreign keys will be defined if you use a DB engine that supports them (e.g. InnoDB).

User Comments


Synopsis

   $c->{dbdriver} = 'mysql';
   # $c->{dbhost} = 'localhost';
   # $c->{dbport} = '3316';
   $c->{dbname} = 'myrepo';
   $c->{dbuser} = 'bob';
   $c->{dbpass} = 'asecret';
   # $c->{dbengine} = 'InnoDB';
 

User Comments


MySQL-specific Annoyances

MySQL does not support sequences.

MySQL is (by default) lax about truncation.

User Comments


CONSTANTS

See EPrints::Database.

User Comments


INSTANCE VARIABLES

See EPrints::Database.

User Comments


METHODS

User Comments


get_server_version

$version = $db->get_server_version

Returns the database server version.

User Comments


mysql_version_from_dbh

$version = $db->mysql_version_from_dbh

Returns the MySQL database server version from handle $dbh.

User Comments


create

$version = $db->create( $username, $password )

Creates EPrints database as user with $username and $password.

User Comments


create_counters

$n = $db->create_counters()

Creates and initialises the counters.

User Comments


has_table

$boolean = $db->has_table( $tablename )

Returns true if the table with $tablename exists in the database.

User Comments


has_column

$boolean = $db->has_column( $table, $column )

Returns true if named $table has named $column in the database.

User Comments


connect

$db->connect()

Connects to the database.

User Comments


has_counter

$success = $db->has_counter( $counter )

Returns true if $counter exists.

User Comments


create_counter

$success = $db->create_counter( $name )

Create and initialise to zero a new counter with $name.

User Comments


drop_counter

$success = $db->drop_counter( $name )

Destroy the counter named $name.

User Comments


remove_counters

$success = $db->remove_counters

Destroy all counters.

User Comments


counter_next

$n = $db->counter_next( $counter )

Return the next unused value for the named counter. Returns undef if the counter doesn't exist.

User Comments


counter_minimum

$db->counter_minimum( $counter, $value )

Ensure that the counter is set no lower that $value. This is used when importing eprints which may not be in scrict sequence.

User Comments


counter_reset

$db->counter_reset( $counter )

Return the counter. Use with cautiuon.

User Comments


get_default_charset

$charset = $db->get_default_charset

Return the character set to use. Always utf8.

User Comments


get_default_collation

$collation = $db->get_default_collation( $lang )

Return the collation to use for language $lang. Always utf8_bin.

User Comments


get_primary_key

@columns = $db->get_primary_key( $table )

Returns a list of column names that comprise the primary key for named named $table.

Returns an empty list if no primary key exists.

User Comments


get_number_of_keys

$num_keys = $db->get_number_of_keys( $table )

Returns the number of columns which are keys (PRI, MUL or UNI) for named $table.

User Comments


get_column_colation

$collation = $db->get_column_colation( $table, $column )

Returns the collation for the named $column in the named $table.

User Comments


quote_identifier

$str = $db->quote_identifier( @parts )

Quote a database identifier (e.g. table names). Multiple @parts will be joined by dots (.).

We'll do quote here, because DBD::mysql#quote_identifier is really slow.

User Comments


prepare_regexp

$sql = $db->prepare_regexp( $col, $value )

Oracle use the syntax:

$col REGEXP $value
 

For the quoted regexp $value and the quoted column $col.

User Comments


sql_like

$sql = $db->sql_LIKE()

Returns the syntactic glue to use when making a case-insensitive LIKE using utf8_general_ci collation.

User Comments


ci_lookup

$value = $db->ci_lookup( $field, $value )

This is a hacky method to support case-insensitive lookup for usernames, emails, etc. It returns the actual case-sensitive version of $value if there is a case-insensitive match for the $field.

User Comments


duplicate_error

$boolean = $db->duplicate_error()

Returns a boolean for whether the database error is a duplicate error. Based on whether the DBI#err code is 1062.

User Comments


duplicate_error

$boolean = $db->duplicate_error()

Returns a boolean for whether the database error is a retry error. Based on whether the DBI#err code is 2006.

User Comments


type_info

$type_info = $db->type_info( $data_type )

See DBI/type_info.

Uses LONGTEXT with column size 2^31 for SQL_CLOB.

User Comments


index_name

$name = $db->index_name( $table, @cols )

Returns the name of the first index that starts with named columns @cols in the named $table.

Returns undef if no index exists.

Uses MySQL 4.0+ compatible SHOW INDEX.

This method gets the entire SHOW INDEX response and builds a look-up table of keys with their ordered columns. This ensures even if MySQL is weird and returns out of order results we won't break.

User Comments


SEE ALSO

EPrints::Database

User Comments


COPYRIGHT

© Copyright 2023 University of Southampton.

EPrints 3.4 is supplied by EPrints Services.

http://www.eprints.org/eprints-3.4/

LICENSE

This file is part of EPrints 3.4 http://www.eprints.org/.

EPrints 3.4 and this file are released under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation unless otherwise stated.

EPrints 3.4 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with EPrints 3.4. If not, see http://www.gnu.org/licenses/.

User Comments