Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 28 |
mysql_base | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
306.00 | |
0.00% |
0 / 28 |
sql_concatenate | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
_sql_query_limit | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 5 |
|||
get_estimated_row_count | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 7 |
|||
get_row_count | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 4 |
|||
get_table_status | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 5 |
|||
_sql_like_expression | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
_sql_not_like_expression | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
_sql_custom_build | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 4 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\db\driver; | |
/** | |
* Abstract MySQL Database Base Abstraction Layer | |
*/ | |
abstract class mysql_base extends \phpbb\db\driver\driver | |
{ | |
/** | |
* {@inheritDoc} | |
*/ | |
public function sql_concatenate($expr1, $expr2) | |
{ | |
return 'CONCAT(' . $expr1 . ', ' . $expr2 . ')'; | |
} | |
/** | |
* Build LIMIT query | |
*/ | |
function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) | |
{ | |
$this->query_result = false; | |
// if $total is set to 0 we do not want to limit the number of rows | |
if ($total == 0) | |
{ | |
// MySQL 4.1+ no longer supports -1 in limit queries | |
$total = '18446744073709551615'; | |
} | |
$query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); | |
return $this->sql_query($query, $cache_ttl); | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
function get_estimated_row_count($table_name) | |
{ | |
$table_status = $this->get_table_status($table_name); | |
if (isset($table_status['Engine'])) | |
{ | |
if ($table_status['Engine'] === 'MyISAM') | |
{ | |
return $table_status['Rows']; | |
} | |
else if ($table_status['Engine'] === 'InnoDB' && $table_status['Rows'] > 100000) | |
{ | |
return '~' . $table_status['Rows']; | |
} | |
} | |
return parent::get_row_count($table_name); | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
function get_row_count($table_name) | |
{ | |
$table_status = $this->get_table_status($table_name); | |
if (isset($table_status['Engine']) && $table_status['Engine'] === 'MyISAM') | |
{ | |
return $table_status['Rows']; | |
} | |
return parent::get_row_count($table_name); | |
} | |
/** | |
* Gets some information about the specified table. | |
* | |
* @param string $table_name Table name | |
* | |
* @return array | |
* | |
* @access protected | |
*/ | |
function get_table_status($table_name) | |
{ | |
$sql = "SHOW TABLE STATUS | |
LIKE '" . $this->sql_escape($table_name) . "'"; | |
$result = $this->sql_query($sql); | |
$table_status = $this->sql_fetchrow($result); | |
$this->sql_freeresult($result); | |
return $table_status; | |
} | |
/** | |
* Build LIKE expression | |
* @access private | |
*/ | |
function _sql_like_expression($expression) | |
{ | |
return $expression; | |
} | |
/** | |
* Build NOT LIKE expression | |
* @access private | |
*/ | |
function _sql_not_like_expression($expression) | |
{ | |
return $expression; | |
} | |
/** | |
* Build db-specific query data | |
* @access private | |
*/ | |
function _sql_custom_build($stage, $data) | |
{ | |
switch ($stage) | |
{ | |
case 'FROM': | |
$data = '(' . $data . ')'; | |
break; | |
} | |
return $data; | |
} | |
} |