diff options
author | Andreas Fischer <bantu@phpbb.com> | 2011-03-15 01:59:47 +0100 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2011-03-15 01:59:47 +0100 |
commit | 784132d7e870e59b9cfa2b7cce4828d817270867 (patch) | |
tree | c4b21a47c61343611d494bf2a8213a25ed0b548d /phpBB | |
parent | c75b299eb160fd330476ea91d5236558a3a59ed7 (diff) | |
parent | 91b319525546ea696653dbb7f2c494058a85b00b (diff) | |
download | forums-784132d7e870e59b9cfa2b7cce4828d817270867.tar forums-784132d7e870e59b9cfa2b7cce4828d817270867.tar.gz forums-784132d7e870e59b9cfa2b7cce4828d817270867.tar.bz2 forums-784132d7e870e59b9cfa2b7cce4828d817270867.tar.xz forums-784132d7e870e59b9cfa2b7cce4828d817270867.zip |
Merge branch 'ticket/naderman/9685' into develop-olympus
* ticket/naderman/9685:
[ticket/9685] Buffer posts for search indexing when using mssqlnative.
Diffstat (limited to 'phpBB')
-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 930c8d2a26..0cd67b1c34 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -392,7 +392,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. @@ -402,7 +413,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 5d8d5fbd47..d7860fc8bc 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 7ed4146f27..8912cda178 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. */ |