aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/db')
-rw-r--r--phpBB/includes/db/db_tools.php86
-rw-r--r--phpBB/includes/db/mysql.php59
-rw-r--r--phpBB/includes/db/mysqli.php7
3 files changed, 41 insertions, 111 deletions
diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php
index 2e349df6ce..0919854f40 100644
--- a/phpBB/includes/db/db_tools.php
+++ b/phpBB/includes/db/db_tools.php
@@ -31,7 +31,7 @@ class phpbb_db_tools
var $sql_layer = '';
var $dbms_type_map = array(
- 'mysql_41' => array(
+ 'mysql' => array(
'INT:' => 'int(%d)',
'BINT' => 'bigint(20)',
'UINT' => 'mediumint(8) UNSIGNED',
@@ -61,36 +61,6 @@ class phpbb_db_tools
'VARBINARY' => 'varbinary(255)',
),
- 'mysql_40' => array(
- 'INT:' => 'int(%d)',
- 'BINT' => 'bigint(20)',
- 'UINT' => 'mediumint(8) UNSIGNED',
- 'UINT:' => 'int(%d) UNSIGNED',
- 'TINT:' => 'tinyint(%d)',
- 'USINT' => 'smallint(4) UNSIGNED',
- 'BOOL' => 'tinyint(1) UNSIGNED',
- 'VCHAR' => 'varbinary(255)',
- 'VCHAR:' => 'varbinary(%d)',
- 'CHAR:' => 'binary(%d)',
- 'XSTEXT' => 'blob',
- 'XSTEXT_UNI'=> 'blob',
- 'STEXT' => 'blob',
- 'STEXT_UNI' => 'blob',
- 'TEXT' => 'blob',
- 'TEXT_UNI' => 'blob',
- 'MTEXT' => 'mediumblob',
- 'MTEXT_UNI' => 'mediumblob',
- 'TIMESTAMP' => 'int(11) UNSIGNED',
- 'DECIMAL' => 'decimal(5,2)',
- 'DECIMAL:' => 'decimal(%d,2)',
- 'PDECIMAL' => 'decimal(6,3)',
- 'PDECIMAL:' => 'decimal(%d,3)',
- 'VCHAR_UNI' => 'blob',
- 'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')),
- 'VCHAR_CI' => 'blob',
- 'VARBINARY' => 'varbinary(255)',
- ),
-
'firebird' => array(
'INT:' => 'INTEGER',
'BINT' => 'DOUBLE PRECISION',
@@ -244,7 +214,7 @@ class phpbb_db_tools
// A list of types being unsigned for better reference in some db's
var $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP');
- var $supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite');
+ var $supported_dbms = array('firebird', 'mssql', 'mysql', 'oracle', 'postgres', 'sqlite');
/**
* Set this to true if you only want to return the 'to-be-executed' SQL statement(s) (as an array).
@@ -260,26 +230,10 @@ class phpbb_db_tools
// Determine mapping database type
switch ($this->db->sql_layer)
{
- case 'mysql':
- $this->sql_layer = 'mysql_40';
- break;
-
- case 'mysql4':
- if (version_compare($this->db->mysql_version, '4.1.3', '>='))
- {
- $this->sql_layer = 'mysql_41';
- }
- else
- {
- $this->sql_layer = 'mysql_40';
- }
- break;
-
case 'mysqli':
- $this->sql_layer = 'mysql_41';
+ $this->sql_layer = 'mysql';
break;
- case 'mssql':
case 'mssql_odbc':
$this->sql_layer = 'mssql';
break;
@@ -453,8 +407,7 @@ class phpbb_db_tools
{
switch ($this->sql_layer)
{
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$sql = "SHOW COLUMNS FROM $table";
$result = $this->db->sql_query($sql);
@@ -731,8 +684,7 @@ class phpbb_db_tools
$return_array['column_type_sql_default'] = $sql_default;
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$sql .= " {$column_type} ";
// For hexadecimal values do not use single quotes
@@ -748,7 +700,7 @@ class phpbb_db_tools
{
$sql .= ' auto_increment';
}
- else if ($this->sql_layer === 'mysql_41' && $column_data[2] == 'true_sort')
+ else if ($column_data[2] == 'true_sort')
{
$sql .= ' COLLATE utf8_unicode_ci';
}
@@ -835,8 +787,7 @@ class phpbb_db_tools
$statements[] = 'ALTER TABLE [' . $table_name . '] ADD [' . $column_name . '] ' . $column_data['column_type_sql_default'];
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'ALTER TABLE `' . $table_name . '` ADD COLUMN `' . $column_name . '` ' . $column_data['column_type_sql'];
break;
@@ -927,8 +878,7 @@ class phpbb_db_tools
$statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']';
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'ALTER TABLE `' . $table_name . '` DROP COLUMN `' . $column_name . '`';
break;
@@ -1015,8 +965,7 @@ class phpbb_db_tools
$statements[] = 'DROP INDEX ' . $table_name . '.' . $index_name;
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'DROP INDEX ' . $index_name . ' ON ' . $table_name;
break;
@@ -1054,8 +1003,7 @@ class phpbb_db_tools
$statements[] = $sql;
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'ALTER TABLE ' . $table_name . ' ADD PRIMARY KEY (' . implode(', ', $column) . ')';
break;
@@ -1132,8 +1080,7 @@ class phpbb_db_tools
$statements[] = 'CREATE UNIQUE INDEX ' . $table_name . '_' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'CREATE UNIQUE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break;
@@ -1161,8 +1108,7 @@ class phpbb_db_tools
$statements[] = 'CREATE INDEX ' . $table_name . '_' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break;
@@ -1221,8 +1167,7 @@ class phpbb_db_tools
$col = 'index_name';
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$sql = 'SHOW KEYS
FROM ' . $table_name;
$col = 'Key_name';
@@ -1244,7 +1189,7 @@ class phpbb_db_tools
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
- if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && !$row['Non_unique'])
+ if ($this->sql_layer == 'mysql' && !$row['Non_unique'])
{
continue;
}
@@ -1286,8 +1231,7 @@ class phpbb_db_tools
$statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql'];
break;
- case 'mysql_40':
- case 'mysql_41':
+ case 'mysql':
$statements[] = 'ALTER TABLE `' . $table_name . '` CHANGE `' . $column_name . '` `' . $column_name . '` ' . $column_data['column_type_sql'];
break;
diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php
index 108a75c0cc..0c949309a1 100644
--- a/phpBB/includes/db/mysql.php
+++ b/phpBB/includes/db/mysql.php
@@ -19,21 +19,18 @@ if (!defined('IN_PHPBB'))
include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
-* MySQL4 Database Abstraction Layer
+* MySQL Database Abstraction Layer
* Compatible with:
-* MySQL 3.23+
-* MySQL 4.0+
* MySQL 4.1+
* MySQL 5.0+
* @package dbal
*/
class dbal_mysql extends dbal
{
- var $mysql_version;
var $multi_insert = true;
// Supports multiple table deletion
- var $multi_table_deletion = false;
+ var $multi_table_deletion = true;
/**
* Connect to server
@@ -46,49 +43,37 @@ class dbal_mysql extends dbal
$this->server = $sqlserver . (($port) ? ':' . $port : '');
$this->dbname = $database;
- $this->sql_layer = 'mysql4';
-
$this->db_connect_id = ($this->persistency) ? @mysql_pconnect($this->server, $this->user, $sqlpassword, $new_link) : @mysql_connect($this->server, $this->user, $sqlpassword, $new_link);
if ($this->db_connect_id && $this->dbname != '')
{
if (@mysql_select_db($this->dbname, $this->db_connect_id))
{
- // Determine what version we are using and if it natively supports UNICODE
- $this->mysql_version = mysql_get_server_info($this->db_connect_id);
-
- if (version_compare($this->mysql_version, '4.1.3', '>='))
+ @mysql_query("SET NAMES 'utf8'", $this->db_connect_id);
+ // enforce strict mode on databases that support it
+ if (version_compare(mysql_get_server_info($this->db_connect_id), '5.0.2', '>='))
{
- @mysql_query("SET NAMES 'utf8'", $this->db_connect_id);
- // enforce strict mode on databases that support it
- if (version_compare($this->mysql_version, '5.0.2', '>='))
- {
- $result = @mysql_query('SELECT @@session.sql_mode AS sql_mode', $this->db_connect_id);
- $row = @mysql_fetch_assoc($result);
- @mysql_free_result($result);
- $modes = array_map('trim', explode(',', $row['sql_mode']));
+ $result = @mysql_query('SELECT @@session.sql_mode AS sql_mode', $this->db_connect_id);
+ $row = @mysql_fetch_assoc($result);
+ @mysql_free_result($result);
+ $modes = array_map('trim', explode(',', $row['sql_mode']));
- // TRADITIONAL includes STRICT_ALL_TABLES and STRICT_TRANS_TABLES
- if (!in_array('TRADITIONAL', $modes))
+ // TRADITIONAL includes STRICT_ALL_TABLES and STRICT_TRANS_TABLES
+ if (!in_array('TRADITIONAL', $modes))
+ {
+ if (!in_array('STRICT_ALL_TABLES', $modes))
{
- if (!in_array('STRICT_ALL_TABLES', $modes))
- {
- $modes[] = 'STRICT_ALL_TABLES';
- }
-
- if (!in_array('STRICT_TRANS_TABLES', $modes))
- {
- $modes[] = 'STRICT_TRANS_TABLES';
- }
+ $modes[] = 'STRICT_ALL_TABLES';
}
- $mode = implode(',', $modes);
- @mysql_query("SET SESSION sql_mode='{$mode}'", $this->db_connect_id);
+ if (!in_array('STRICT_TRANS_TABLES', $modes))
+ {
+ $modes[] = 'STRICT_TRANS_TABLES';
+ }
}
- }
- else if (version_compare($this->mysql_version, '4.0.0', '<'))
- {
- $this->sql_layer = 'mysql';
+
+ $mode = implode(',', $modes);
+ @mysql_query("SET SESSION sql_mode='{$mode}'", $this->db_connect_id);
}
return $this->db_connect_id;
@@ -103,7 +88,7 @@ class dbal_mysql extends dbal
*/
function sql_server_info()
{
- return 'MySQL ' . $this->mysql_version;
+ return 'MySQL ' . mysql_get_server_info($this->db_connect_id);
}
/**
diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php
index 394c547151..c9c89fb824 100644
--- a/phpBB/includes/db/mysqli.php
+++ b/phpBB/includes/db/mysqli.php
@@ -20,8 +20,9 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* MySQLi Database Abstraction Layer
-* mysqli-extension has to be compiled with:
-* MySQL 4.1+ or MySQL 5.0+
+* Compatible with:
+* MySQL 4.1+
+* MySQL 5.0+
* @package dbal
*/
class dbal_mysqli extends dbal
@@ -29,7 +30,7 @@ class dbal_mysqli extends dbal
var $multi_insert = true;
// Supports multiple table deletion
- var $multi_table_deletion = false;
+ var $multi_table_deletion = true;
/**
* Connect to server