diff options
author | Vjacheslav Trushkin <arty@phpbb.com> | 2012-03-24 11:45:53 +0200 |
---|---|---|
committer | Vjacheslav Trushkin <arty@phpbb.com> | 2012-03-24 11:45:53 +0200 |
commit | 583da4274f91d3e8228ce58e8a849aa861ef66f8 (patch) | |
tree | d1841433f1d54768c3fc9f01af138adff6fc50c9 /phpBB/includes/db/mysql.php | |
parent | f17449e5ffb87c4a63e6c27c52036c5812f970d7 (diff) | |
parent | cc13bac412442a1d72affcc3222b6bfca094e92a (diff) | |
download | forums-583da4274f91d3e8228ce58e8a849aa861ef66f8.tar forums-583da4274f91d3e8228ce58e8a849aa861ef66f8.tar.gz forums-583da4274f91d3e8228ce58e8a849aa861ef66f8.tar.bz2 forums-583da4274f91d3e8228ce58e8a849aa861ef66f8.tar.xz forums-583da4274f91d3e8228ce58e8a849aa861ef66f8.zip |
Merge branch 'develop' into feature/prosilver-cleanup/duplicate-colors
* develop: (117 commits)
[task/travis] Refactor php version check for dbunit install
[task/travis] Exclude functional and slow tests
[ticket/10719] Revert "Skip functional tests on PHP 5.2"
[task/travis-develop2] Update version from 5.3 to 5.3.2
[task/travis] Dropping support for 5.2 in develop branch
[task/travis] Some more small travis fixes
[task/travis] Rename travis phpunit config files
[task/travis] Fixing some travis issues
[ticket/10684] Adjust function and parameter name, minor changes.
[task/travis] Add automated testing to readme
[task/travis] Removing development information
[task/travis] Adding Travis Continuous Intergration Support
[ticket/10704] minor typo in a comment
[ticket/10717] Fix profile field sample in prosilver“s memberlist_view.html
[ticket/10691] Fixed the speed of creating search index
[task/php54-ascraeus] Bring p_master#module_auth into PHP 5 era.
[task/php54] Disable E_STRICT in Olympus when running on PHP 5.4.
[task/php54] Refactor error_reporting call slightly.
[ticket/10690] Fix undefined UNAPPROVED_POSTS_ZERO_TOTAL in queue
[ticket/10689] Fix "First character"-option in "Find a member"-search
...
Conflicts:
phpBB/styles/prosilver/theme/cp.css
Diffstat (limited to 'phpBB/includes/db/mysql.php')
-rw-r--r-- | phpBB/includes/db/mysql.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php index 317b8d123d..eb38e3e913 100644 --- a/phpBB/includes/db/mysql.php +++ b/phpBB/includes/db/mysql.php @@ -318,6 +318,76 @@ class dbal_mysql extends dbal } /** + * Gets the estimated number of rows in a specified table. + * + * @param string $table_name Table name + * + * @return string Number of rows in $table_name. + * Prefixed with ~ if estimated (otherwise exact). + * + * @access public + */ + 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); + } + + /** + * Gets the exact number of rows in a specified table. + * + * @param string $table_name Table name + * + * @return string Exact number of rows in $table_name. + * + * @access public + */ + 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 */ |