aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2011-03-15 02:00:04 +0100
committerAndreas Fischer <bantu@phpbb.com>2011-03-15 02:00:04 +0100
commit0e9b755667cdc4c05869a085de8ce75452483ba2 (patch)
tree9242cf18e2807ce1e8b014b0c57600c8bedb8736
parent7588b4352638a3bb7fa0cff7ef9d78c8668d0905 (diff)
parent784132d7e870e59b9cfa2b7cce4828d817270867 (diff)
downloadforums-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.php18
-rw-r--r--phpBB/includes/db/dbal.php10
-rw-r--r--phpBB/includes/db/mssqlnative.php10
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.
*/