diff options
author | Andreas Fischer <bantu@phpbb.com> | 2011-03-15 02:00:04 +0100 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2011-03-15 02:00:04 +0100 |
commit | 0e9b755667cdc4c05869a085de8ce75452483ba2 (patch) | |
tree | 9242cf18e2807ce1e8b014b0c57600c8bedb8736 | |
parent | 7588b4352638a3bb7fa0cff7ef9d78c8668d0905 (diff) | |
parent | 784132d7e870e59b9cfa2b7cce4828d817270867 (diff) | |
download | forums-0e9b755667cdc4c05869a085de8ce75452483ba2.tar forums-0e9b755667cdc4c05869a085de8ce75452483ba2.tar.gz forums-0e9b755667cdc4c05869a085de8ce75452483ba2.tar.bz2 forums-0e9b755667cdc4c05869a085de8ce75452483ba2.tar.xz forums-0e9b755667cdc4c05869a085de8ce75452483ba2.zip |
Merge branch 'develop-olympus' into develop
* develop-olympus:
[ticket/9685] Buffer posts for search indexing when using mssqlnative.
-rw-r--r-- | phpBB/includes/acp/acp_search.php | 18 | ||||
-rw-r--r-- | phpBB/includes/db/dbal.php | 10 | ||||
-rw-r--r-- | phpBB/includes/db/mssqlnative.php | 10 |
3 files changed, 35 insertions, 3 deletions
diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 27e636ddcc..21f7e3d31b 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -384,7 +384,18 @@ class acp_search AND post_id <= ' . (int) ($post_counter + $this->batch_size); $result = $db->sql_query($sql); - while ($row = $db->sql_fetchrow($result)) + $buffer = $db->sql_buffer_nested_transactions(); + + if ($buffer) + { + $rows = $db->sql_fetchrowset($result); + $rows[] = false; // indicate end of array for while loop below + + $db->sql_freeresult($result); + } + + $i = 0; + while ($row = ($buffer ? $rows[$i++] : $db->sql_fetchrow($result))) { // Indexing enabled for this forum or global announcement? // Global announcements get indexed by default. @@ -394,7 +405,10 @@ class acp_search } $row_count++; } - $db->sql_freeresult($result); + if (!$buffer) + { + $db->sql_freeresult($result); + } $post_counter += $this->batch_size; } diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php index ed1d67b8e9..148f56b5a8 100644 --- a/phpBB/includes/db/dbal.php +++ b/phpBB/includes/db/dbal.php @@ -242,6 +242,16 @@ class dbal } /** + * Returns whether results of a query need to be buffered to run a transaction while iterating over them. + * + * @return bool Whether buffering is required. + */ + function sql_buffer_nested_transaction() + { + return false; + } + + /** * SQL Transaction * @access private */ diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php index e893d746bc..27eac4b652 100644 --- a/phpBB/includes/db/mssqlnative.php +++ b/phpBB/includes/db/mssqlnative.php @@ -259,6 +259,14 @@ class dbal_mssqlnative extends dbal } /** + * {@inheritDoc} + */ + function sql_buffer_nested_transaction() + { + return true; + } + + /** * SQL Transaction * @access private */ @@ -628,7 +636,7 @@ class dbal_mssqlnative extends dbal return false; } } - + /** * Allows setting mssqlnative specific query options passed to sqlsrv_query as 4th parameter. */ |