diff options
Diffstat (limited to 'phpBB/includes/db')
-rw-r--r-- | phpBB/includes/db/db_tools.php | 86 | ||||
-rw-r--r-- | phpBB/includes/db/mysql.php | 59 | ||||
-rw-r--r-- | phpBB/includes/db/mysqli.php | 7 |
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 |