aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/mysql.php
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2012-03-11 15:18:33 +0100
committerIgor Wiedler <igor@wiedler.ch>2012-03-11 15:18:33 +0100
commitae984025f0575554bb78fef9dcf66233748e97c8 (patch)
tree633c4940c92626dfbd06efa70987f99e03bd0b28 /phpBB/includes/db/mysql.php
parente02d92ac62fbe1dc08994444c18a7447d72c56e6 (diff)
parent3850b05fbb9a292957e41023fcea797191442692 (diff)
downloadforums-ae984025f0575554bb78fef9dcf66233748e97c8.tar
forums-ae984025f0575554bb78fef9dcf66233748e97c8.tar.gz
forums-ae984025f0575554bb78fef9dcf66233748e97c8.tar.bz2
forums-ae984025f0575554bb78fef9dcf66233748e97c8.tar.xz
forums-ae984025f0575554bb78fef9dcf66233748e97c8.zip
Merge branch 'develop' into feature/event-dispatcher
* develop: (95 commits) [ticket/9084] Explain the logic. [ticket/10653] Call get_row_count of base class in mysql get_estimated_row_count [ticket/9813] Only get posts table row count if we detected a fulltext index. [feature/append_var] Adding test case [ticket/7432] Delete redundant reference to "appropriate menu item". [ticket/10618] Change phpBB 3 to phpBB 3.1. [ticket/10685] Refactor template test defaults for php 5.4 compatibility. [feature/append_var] Adding append_var template class function [ticket/9813] Also use estimated row count of posts table for fulltext mysql. [ticket/10653] Fix parameter to substr() in unit tests. Should be 1, not -1. [ticket/10653] Unit tests for get_row_count() and get_estimated_row_count(). [ticket/10653] Add ability to count table rows to database abstraction layer. [ticket/9813] Use table status row count only if greater than 100000 or exact. [ticket/9813] Use SHOW TABLE STATUS to get search stats for native on MySQL. [ticket/8652] Comment for also updating forum watch table in user_notification. [ticket/8652] Sending 2 emails on 2 replies [ticket/10680] Add /phpBB/ext/* to .gitignore [ticket/10672] Fix total post count language string in statistics and feed [ticket/9220] Remove margin on table.table1 so it's centered in the blue box. [ticket/10453] Fixing spacing ... Conflicts: tests/bootstrap.php
Diffstat (limited to 'phpBB/includes/db/mysql.php')
-rw-r--r--phpBB/includes/db/mysql.php70
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
*/