aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2006-08-01 16:14:14 +0000
committerNils Adermann <naderman@naderman.de>2006-08-01 16:14:14 +0000
commit09081e410fc015c71dbd460aeafade42d7070b78 (patch)
tree351a3d34ce43138a2251806bcefa007b48c84a87 /phpBB/includes/db
parentced8624b8e86bc6aac143163e538f87376319079 (diff)
downloadforums-09081e410fc015c71dbd460aeafade42d7070b78.tar
forums-09081e410fc015c71dbd460aeafade42d7070b78.tar.gz
forums-09081e410fc015c71dbd460aeafade42d7070b78.tar.bz2
forums-09081e410fc015c71dbd460aeafade42d7070b78.tar.xz
forums-09081e410fc015c71dbd460aeafade42d7070b78.zip
- acm_file uses an index pointer to the current row instead of shifting the result array now [Bug #2451]
- all dbals adjusted to use the cache in sql_fetchfield, sql_rowseek, sql_numrows and sql_freeresult [Bug #2451] - use include_once for dbal.php to at least theoretically allow connections to multiple databases at once - added a space to an SQL query [Bug #3506] - detailed information on adding friends/foes [Bugs #2509, #2499] - e modifier stands for evil, so I removed it ;-) - corrected progress_bar image filename in imageset.cfg [Bug #3374] git-svn-id: file:///svn/phpbb/trunk@6225 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/db')
-rw-r--r--phpBB/includes/db/firebird.php41
-rw-r--r--phpBB/includes/db/mssql.php36
-rw-r--r--phpBB/includes/db/mssql_odbc.php36
-rw-r--r--phpBB/includes/db/mysql.php42
-rw-r--r--phpBB/includes/db/mysql4.php42
-rw-r--r--phpBB/includes/db/mysqli.php38
-rw-r--r--phpBB/includes/db/oracle.php36
-rw-r--r--phpBB/includes/db/postgres.php36
-rw-r--r--phpBB/includes/db/sqlite.php48
9 files changed, 337 insertions, 18 deletions
diff --git a/phpBB/includes/db/firebird.php b/phpBB/includes/db/firebird.php
index 8eec225c96..e77225ae02 100644
--- a/phpBB/includes/db/firebird.php
+++ b/phpBB/includes/db/firebird.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'firebird');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* Firebird/Interbase Database Abstraction Layer
@@ -93,6 +93,12 @@ class dbal_firebird extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -160,6 +166,18 @@ class dbal_firebird extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
+ if (!$query_id)
+ {
+ $query_id = $this->query_result;
+ }
+
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return false;
}
@@ -218,6 +236,8 @@ class dbal_firebird extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -230,6 +250,11 @@ class dbal_firebird extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -243,11 +268,18 @@ class dbal_firebird extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
// We do not fetch the row for rownum == 0 because then the next resultset would be the second row
for ($i = 0; $i < $rownum; $i++)
{
@@ -293,11 +325,18 @@ class dbal_firebird extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php
index 6ef8597c18..13a6fb8aab 100644
--- a/phpBB/includes/db/mssql.php
+++ b/phpBB/includes/db/mssql.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'mssql');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* MSSQL Database Abstraction Layer
@@ -103,6 +103,12 @@ class dbal_mssql extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -203,11 +209,18 @@ class dbal_mssql extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @mssql_num_rows($query_id) : false;
}
@@ -256,6 +269,8 @@ class dbal_mssql extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -268,6 +283,11 @@ class dbal_mssql extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -281,11 +301,18 @@ class dbal_mssql extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @mssql_data_seek($query_id, $rownum) : false;
}
@@ -313,11 +340,18 @@ class dbal_mssql extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[$query_id]))
{
unset($this->open_queries[$query_id]);
diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php
index 8f37206817..e1b2675a23 100644
--- a/phpBB/includes/db/mssql_odbc.php
+++ b/phpBB/includes/db/mssql_odbc.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'mssql_odbc');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* Unified ODBC functions
@@ -101,6 +101,12 @@ class dbal_mssql_odbc extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -205,11 +211,18 @@ class dbal_mssql_odbc extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @odbc_num_rows($query_id) : false;
}
@@ -247,6 +260,8 @@ class dbal_mssql_odbc extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -259,6 +274,11 @@ class dbal_mssql_odbc extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -272,11 +292,18 @@ class dbal_mssql_odbc extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
$this->sql_freeresult($query_id);
$query_id = $this->sql_query($this->last_query_text);
@@ -323,11 +350,18 @@ class dbal_mssql_odbc extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php
index 60e56e2964..7e363721a9 100644
--- a/phpBB/includes/db/mysql.php
+++ b/phpBB/includes/db/mysql.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'mysql');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* MySQL Database Abstraction Layer
@@ -89,6 +89,12 @@ class dbal_mysql extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -171,11 +177,18 @@ class dbal_mysql extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @mysql_num_rows($query_id) : false;
}
@@ -213,6 +226,8 @@ class dbal_mysql extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -222,11 +237,22 @@ class dbal_mysql extends dbal
{
if ($rownum === false)
{
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
else
{
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ $cache->sql_rowseek($query_id, $rownum);
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
return @mysql_result($query_id, $rownum, $field);
}
}
@@ -240,11 +266,18 @@ class dbal_mysql extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @mysql_data_seek($query_id, $rownum) : false;
}
@@ -261,11 +294,18 @@ class dbal_mysql extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/mysql4.php b/phpBB/includes/db/mysql4.php
index 6028a7085f..071f4c4b55 100644
--- a/phpBB/includes/db/mysql4.php
+++ b/phpBB/includes/db/mysql4.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'mysql4');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* MySQL4 Database Abstraction Layer
@@ -91,6 +91,12 @@ class dbal_mysql4 extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -174,11 +180,18 @@ class dbal_mysql4 extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @mysql_num_rows($query_id) : false;
}
@@ -216,6 +229,8 @@ class dbal_mysql4 extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -225,11 +240,22 @@ class dbal_mysql4 extends dbal
{
if ($rownum === false)
{
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
else
{
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ $cache->sql_rowseek($query_id, $rownum);
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
return @mysql_result($query_id, $rownum, $field);
}
}
@@ -243,11 +269,18 @@ class dbal_mysql4 extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @mysql_data_seek($query_id, $rownum) : false;
}
@@ -264,11 +297,18 @@ class dbal_mysql4 extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php
index 1257621729..f6a00fde3b 100644
--- a/phpBB/includes/db/mysqli.php
+++ b/phpBB/includes/db/mysqli.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'mysqli');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* MySQLi Database Abstraction Layer
@@ -95,6 +95,12 @@ class dbal_mysqli extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -173,11 +179,18 @@ class dbal_mysqli extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @mysqli_num_rows($query_id) : false;
}
@@ -215,6 +228,8 @@ class dbal_mysqli extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -227,6 +242,11 @@ class dbal_mysqli extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -240,11 +260,18 @@ class dbal_mysqli extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @mysqli_data_seek($query_id, $rownum) : false;
}
@@ -261,18 +288,19 @@ class dbal_mysqli extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
- // Make sure it is not a cached query
- if (is_object($this->query_result))
+ if (isset($cache->sql_rowset[$query_id]))
{
- return @mysqli_free_result($query_id);
+ return $cache->sql_freeresult($query_id);
}
- return false;
+ return @mysqli_free_result($query_id);
}
/**
diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php
index 699005fd99..fc5bf6f78e 100644
--- a/phpBB/includes/db/oracle.php
+++ b/phpBB/includes/db/oracle.php
@@ -22,7 +22,7 @@ if(!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'oracle');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* Oracle Database Abstraction Layer
@@ -81,6 +81,12 @@ class dbal_oracle extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -225,11 +231,18 @@ class dbal_oracle extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
$result = @ocifetchstatement($query_id, $this->rowset);
// OCIFetchStatment kills our query result so we have to execute the statment again
@@ -293,6 +306,8 @@ class dbal_oracle extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -305,6 +320,11 @@ class dbal_oracle extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -318,11 +338,18 @@ class dbal_oracle extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
if (!$query_id)
{
return false;
@@ -380,11 +407,18 @@ class dbal_oracle extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php
index 3a8e52f78d..c928a936d9 100644
--- a/phpBB/includes/db/postgres.php
+++ b/phpBB/includes/db/postgres.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'postgres');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* PostgreSQL Database Abstraction Layer
@@ -120,6 +120,12 @@ class dbal_postgres extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -212,11 +218,18 @@ class dbal_postgres extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @pg_num_rows($query_id) : false;
}
@@ -254,6 +267,8 @@ class dbal_postgres extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -266,6 +281,11 @@ class dbal_postgres extends dbal
$this->sql_rowseek($rownum, $query_id);
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_fetchfield($query_id, $field);
+ }
+
$row = $this->sql_fetchrow($query_id);
return isset($row[$field]) ? $row[$field] : false;
}
@@ -279,11 +299,18 @@ class dbal_postgres extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @pg_result_seek($query_id, $rownum) : false;
}
@@ -321,11 +348,18 @@ class dbal_postgres extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
if (isset($this->open_queries[(int) $query_id]))
{
unset($this->open_queries[(int) $query_id]);
diff --git a/phpBB/includes/db/sqlite.php b/phpBB/includes/db/sqlite.php
index 95f12175c3..152adfa42c 100644
--- a/phpBB/includes/db/sqlite.php
+++ b/phpBB/includes/db/sqlite.php
@@ -22,7 +22,7 @@ if (!defined('SQL_LAYER'))
{
define('SQL_LAYER', 'sqlite');
- include($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* Sqlite Database Abstraction Layer
@@ -87,6 +87,12 @@ class dbal_sqlite extends dbal
/**
* Base query method
+ *
+ * @param string $query Contains the SQL query which shall be executed
+ * @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
+ * @return mixed When casted to bool the returned value returns true on success and false on failure
+ *
+ * @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
@@ -169,11 +175,18 @@ class dbal_sqlite extends dbal
*/
function sql_numrows($query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_numrows($query_id);
+ }
+
return ($query_id) ? @sqlite_num_rows($query_id) : false;
}
@@ -211,6 +224,8 @@ class dbal_sqlite extends dbal
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
@@ -218,15 +233,17 @@ class dbal_sqlite extends dbal
if ($query_id)
{
- if ($rownum === false)
+ if ($rownum !== false)
{
- return @sqlite_column($query_id, $field);
+ $this->sql_rowseek($rownum, $query_id);
}
- else
+
+ if (isset($cache->sql_rowset[$query_id]))
{
- $this->sql_rowseek($rownum, $query_id);
- return @sqlite_column($query_id, $field);
+ return $cache->sql_fetchfield($query_id, $field);
}
+
+ return @sqlite_column($query_id, $field);
}
return false;
@@ -238,11 +255,18 @@ class dbal_sqlite extends dbal
*/
function sql_rowseek($rownum, $query_id = false)
{
+ global $cache;
+
if (!$query_id)
{
$query_id = $this->query_result;
}
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_rowseek($query_id, $rownum);
+ }
+
return ($query_id) ? @sqlite_seek($query_id, $rownum) : false;
}
@@ -259,6 +283,18 @@ class dbal_sqlite extends dbal
*/
function sql_freeresult($query_id = false)
{
+ global $cache;
+
+ if (!$query_id)
+ {
+ $query_id = $this->query_result;
+ }
+
+ if (isset($cache->sql_rowset[$query_id]))
+ {
+ return $cache->sql_freeresult($query_id);
+ }
+
return true;
}