Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 28
mysql_base
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
306.00
0.00% covered (danger)
0.00%
0 / 28
 sql_concatenate
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 _sql_query_limit
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 5
 get_estimated_row_count
0.00% covered (danger)
0.00%
0 / 1
30.00
0.00% covered (danger)
0.00%
0 / 7
 get_row_count
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 4
 get_table_status
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 5
 _sql_like_expression
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 _sql_not_like_expression
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 _sql_custom_build
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
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;
    }
}