phpBB

Code Changes

File: phpbb/db/driver/postgres.php

  Unmodified   Added   Modified   Removed
Line 206Line 206
				{
return false;
}

				{
return false;
}

 

$safe_query_id = $this->clean_query_id($this->query_result);


if ($cache && $cache_ttl)
{


if ($cache && $cache_ttl)
{

					$this->open_queries[(int) $this->query_result] = $this->query_result;

					$this->open_queries[$safe_query_id] = $this->query_result;

					$this->query_result = $cache->sql_save($this, $query, $this->query_result, $cache_ttl);
}
else if (strpos($query, 'SELECT') === 0)
{

					$this->query_result = $cache->sql_save($this, $query, $this->query_result, $cache_ttl);
}
else if (strpos($query, 'SELECT') === 0)
{

					$this->open_queries[(int) $this->query_result] = $this->query_result;

					$this->open_queries[$safe_query_id] = $this->query_result;

				}
}
else if ($this->debug_sql_explain)

				}
}
else if ($this->debug_sql_explain)

Line 277Line 279
			$query_id = $this->query_result;
}


			$query_id = $this->query_result;
}


		if ($cache && $cache->sql_exists($query_id))


		$safe_query_id = $this->clean_query_id($query_id);
if ($cache && $cache->sql_exists($safe_query_id))

		{

		{

			return $cache->sql_fetchrow($query_id);

			return $cache->sql_fetchrow($safe_query_id);

		}

return ($query_id) ? pg_fetch_assoc($query_id, null) : false;

		}

return ($query_id) ? pg_fetch_assoc($query_id, null) : false;

Line 297Line 300
			$query_id = $this->query_result;
}


			$query_id = $this->query_result;
}


		if ($cache && $cache->sql_exists($query_id))


		$safe_query_id = $this->clean_query_id($query_id);
if ($cache && $cache->sql_exists($safe_query_id))

		{

		{

			return $cache->sql_rowseek($rownum, $query_id);

			return $cache->sql_rowseek($rownum, $safe_query_id);

		}

return ($query_id) ? @pg_result_seek($query_id, $rownum) : false;

		}

return ($query_id) ? @pg_result_seek($query_id, $rownum) : false;

 
	}

/**
* {@inheritDoc}
*/
function sql_fetchfield($field, $rownum = false, $query_id = false)
{
global $cache;

if ($query_id === false)
{
$query_id = $this->query_result;
}

if ($query_id)
{
if ($rownum !== false)
{
$this->sql_rowseek($rownum, $query_id);
}

$safe_query_id = $this->clean_query_id($query_id);
if ($cache && !is_object($query_id) && $cache->sql_exists($safe_query_id))
{
return $cache->sql_fetchfield($safe_query_id, $field);
}

$row = $this->sql_fetchrow($query_id);
return (isset($row[$field])) ? $row[$field] : false;
}

return false;

	}

/**

	}

/**

Line 346Line 382
			$query_id = $this->query_result;
}


			$query_id = $this->query_result;
}


		if ($cache && !is_object($query_id) && $cache->sql_exists($query_id))


		$safe_query_id = $this->clean_query_id($query_id);
if ($cache && !is_object($query_id) && $cache->sql_exists($safe_query_id))

		{

		{

			return $cache->sql_freeresult($query_id);

			return $cache->sql_freeresult($safe_query_id);

		}


		}


		if (isset($this->open_queries[(int) $query_id]))

		if (isset($this->open_queries[$safe_query_id]))

		{

		{

			unset($this->open_queries[(int) $query_id]);

			unset($this->open_queries[$safe_query_id]);

			return pg_free_result($query_id);
}


			return pg_free_result($query_id);
}


Line 431Line 468
	*/
function _sql_close()
{

	*/
function _sql_close()
{

 
		// Released resources are already closed, return true in this case
if (!is_resource($this->db_connect_id))
{
return true;
}

		return @pg_close($this->db_connect_id);
}


		return @pg_close($this->db_connect_id);
}


Line 504Line 546
	function sql_quote($msg)
{
return '"' . $msg . '"';

	function sql_quote($msg)
{
return '"' . $msg . '"';

 
	}

/**
* Ensure query ID can be used by cache
*
* @param resource|int|string $query_id Mixed type query id
*
* @return int|string Query id in string or integer format
*/
private function clean_query_id($query_id)
{
// As of PHP 8.1 PgSQL functions accept/return \PgSQL\* objects instead of "pgsql *" resources
// Attempting to cast object to int will throw error, hence correctly handle all cases
if (is_resource($query_id))
{
return function_exists('get_resource_id') ? get_resource_id($query_id) : (int) $query_id;
}
else
{
return is_object($query_id) ? spl_object_id($query_id) : $query_id;
}

	}
}


	}
}