diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2013-07-14 11:57:53 -0400 | 
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2013-07-14 11:57:53 -0400 | 
| commit | d7a85ebc245e76038b8ccd56524f045cc92a6c13 (patch) | |
| tree | 66aa645c4d86636f0bce04a7125a7757a466b224 /phpBB/includes/db/driver/postgres.php | |
| parent | fa3cdb6bf2cfdca9c26168bd258752718bc8a43f (diff) | |
| parent | f6865dc33a8cedb7d21a64401ed80d2edbac36bd (diff) | |
| download | forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.gz forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.bz2 forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.xz forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.zip | |
Merge remote-tracking branch 'igorw/ticket/11574' into ticket/11574
* igorw/ticket/11574: (575 commits)
  [ticket/11702] Fix forum_posts left over for link-click counts in viewforum.php
  [ticket/11696] Move file to new directory
  [ticket/11696] Rename constructor to __construct()
  [ticket/11696] Remove manual loading of db_tools in extension controller test
  [ticket/11696] Rename db_tools.php so it can be autoloaded
  [ticket/11698] Moving all autoloadable files to phpbb/
  [ticket/11694] Do not locate assets with root path
  [ticket/11692] Don't update search_type in dev migration if already appended
  [ticket/11675] Fix template loop
  [ticket/11690] Old module class names may get autoloaded by class_exists
  [ticket/9649] Display information on index for moderators on unapproved posts
  [ticket/10999] Fix assets_version in ACP
  [prep-release-3.0.12] More changelog items for the 3.0.12 release.
  [ticket/11687] Add assets_version to phpbb_config
  [ticket/11686] Not checking for phpBB Debug errors on functional tests
  [ticket/11670] Consistency with logo: Replace "phpBB(tm)" with "phpBB(R)".
  [ticket/11674] Do not include vendor folder if there are no dependencies.
  [ticket/11685] Remove logout confirmation page
  [ticket/11684] Remove useless confirmation page after login and admin login
  [ticket/9657] Define user before injecting
  ...
Diffstat (limited to 'phpBB/includes/db/driver/postgres.php')
| -rw-r--r-- | phpBB/includes/db/driver/postgres.php | 491 | 
1 files changed, 0 insertions, 491 deletions
| diff --git a/phpBB/includes/db/driver/postgres.php b/phpBB/includes/db/driver/postgres.php deleted file mode 100644 index 14854d179d..0000000000 --- a/phpBB/includes/db/driver/postgres.php +++ /dev/null @@ -1,491 +0,0 @@ -<?php -/** -* -* @package dbal -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - -/** -* PostgreSQL Database Abstraction Layer -* Minimum Requirement is Version 7.3+ -* @package dbal -*/ -class phpbb_db_driver_postgres extends phpbb_db_driver -{ -	var $last_query_text = ''; -	var $connect_error = ''; - -	/** -	* Connect to server -	*/ -	function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false) -	{ -		$connect_string = ''; - -		if ($sqluser) -		{ -			$connect_string .= "user=$sqluser "; -		} - -		if ($sqlpassword) -		{ -			$connect_string .= "password=$sqlpassword "; -		} - -		if ($sqlserver) -		{ -			// $sqlserver can carry a port separated by : for compatibility reasons -			// If $sqlserver has more than one : it's probably an IPv6 address. -			// In this case we only allow passing a port via the $port variable. -			if (substr_count($sqlserver, ':') === 1) -			{ -				list($sqlserver, $port) = explode(':', $sqlserver); -			} - -			if ($sqlserver !== 'localhost') -			{ -				$connect_string .= "host=$sqlserver "; -			} - -			if ($port) -			{ -				$connect_string .= "port=$port "; -			} -		} - -		$schema = ''; - -		if ($database) -		{ -			$this->dbname = $database; -			if (strpos($database, '.') !== false) -			{ -				list($database, $schema) = explode('.', $database); -			} -			$connect_string .= "dbname=$database"; -		} - -		$this->persistency = $persistency; - -		if ($this->persistency) -		{ -			if (!function_exists('pg_pconnect')) -			{ -				$this->connect_error = 'pg_pconnect function does not exist, is pgsql extension installed?'; -				return $this->sql_error(''); -			} -			$collector = new phpbb_error_collector; -			$collector->install(); -			$this->db_connect_id = (!$new_link) ? @pg_pconnect($connect_string) : @pg_pconnect($connect_string, PGSQL_CONNECT_FORCE_NEW); -		} -		else -		{ -			if (!function_exists('pg_connect')) -			{ -				$this->connect_error = 'pg_connect function does not exist, is pgsql extension installed?'; -				return $this->sql_error(''); -			} -			$collector = new phpbb_error_collector; -			$collector->install(); -			$this->db_connect_id = (!$new_link) ? @pg_connect($connect_string) : @pg_connect($connect_string, PGSQL_CONNECT_FORCE_NEW); -		} - -		$collector->uninstall(); - -		if ($this->db_connect_id) -		{ -			if (version_compare($this->sql_server_info(true), '8.2', '>=')) -			{ -				$this->multi_insert = true; -			} - -			if ($schema !== '') -			{ -				@pg_query($this->db_connect_id, 'SET search_path TO ' . $schema); -			} -			return $this->db_connect_id; -		} - -		$this->connect_error = $collector->format_errors(); -		return $this->sql_error(''); -	} - -	/** -	* Version information about used database -	* @param bool $raw if true, only return the fetched sql_server_version -	* @param bool $use_cache If true, it is safe to retrieve the value from the cache -	* @return string sql server version -	*/ -	function sql_server_info($raw = false, $use_cache = true) -	{ -		global $cache; - -		if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('pgsql_version')) === false) -		{ -			$query_id = @pg_query($this->db_connect_id, 'SELECT VERSION() AS version'); -			$row = @pg_fetch_assoc($query_id, null); -			@pg_free_result($query_id); - -			$this->sql_server_version = (!empty($row['version'])) ? trim(substr($row['version'], 10)) : 0; - -			if (!empty($cache) && $use_cache) -			{ -				$cache->put('pgsql_version', $this->sql_server_version); -			} -		} - -		return ($raw) ? $this->sql_server_version : 'PostgreSQL ' . $this->sql_server_version; -	} - -	/** -	* SQL Transaction -	* @access private -	*/ -	function _sql_transaction($status = 'begin') -	{ -		switch ($status) -		{ -			case 'begin': -				return @pg_query($this->db_connect_id, 'BEGIN'); -			break; - -			case 'commit': -				return @pg_query($this->db_connect_id, 'COMMIT'); -			break; - -			case 'rollback': -				return @pg_query($this->db_connect_id, 'ROLLBACK'); -			break; -		} - -		return true; -	} - -	/** -	* 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) -	{ -		if ($query != '') -		{ -			global $cache; - -			// EXPLAIN only in extra debug mode -			if (defined('DEBUG')) -			{ -				$this->sql_report('start', $query); -			} - -			$this->last_query_text = $query; -			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; -			$this->sql_add_num_queries($this->query_result); - -			if ($this->query_result === false) -			{ -				if (($this->query_result = @pg_query($this->db_connect_id, $query)) === false) -				{ -					$this->sql_error($query); -				} - -				if (defined('DEBUG')) -				{ -					$this->sql_report('stop', $query); -				} - -				if ($cache && $cache_ttl) -				{ -					$this->open_queries[(int) $this->query_result] = $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) -				{ -					$this->open_queries[(int) $this->query_result] = $this->query_result; -				} -			} -			else if (defined('DEBUG')) -			{ -				$this->sql_report('fromcache', $query); -			} -		} -		else -		{ -			return false; -		} - -		return $this->query_result; -	} - -	/** -	* Build db-specific query data -	* @access private -	*/ -	function _sql_custom_build($stage, $data) -	{ -		return $data; -	} - -	/** -	* Build LIMIT query -	*/ -	function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) -	{ -		$this->query_result = false; - -		// if $total is set to 0 we do not want to limit the number of rows -		if ($total == 0) -		{ -			$total = 'ALL'; -		} - -		$query .= "\n LIMIT $total OFFSET $offset"; - -		return $this->sql_query($query, $cache_ttl); -	} - -	/** -	* Return number of affected rows -	*/ -	function sql_affectedrows() -	{ -		return ($this->query_result) ? @pg_affected_rows($this->query_result) : false; -	} - -	/** -	* Fetch current row -	*/ -	function sql_fetchrow($query_id = false) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($cache && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_fetchrow($query_id); -		} - -		return ($query_id !== false) ? @pg_fetch_assoc($query_id, null) : false; -	} - -	/** -	* Seek to given row number -	* rownum is zero-based -	*/ -	function sql_rowseek($rownum, &$query_id) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($cache && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_rowseek($rownum, $query_id); -		} - -		return ($query_id !== false) ? @pg_result_seek($query_id, $rownum) : false; -	} - -	/** -	* Get last inserted id after insert statement -	*/ -	function sql_nextid() -	{ -		$query_id = $this->query_result; - -		if ($query_id !== false && $this->last_query_text != '') -		{ -			if (preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text, $tablename)) -			{ -				$query = "SELECT currval('" . $tablename[1] . "_seq') AS last_value"; -				$temp_q_id = @pg_query($this->db_connect_id, $query); - -				if (!$temp_q_id) -				{ -					return false; -				} - -				$temp_result = @pg_fetch_assoc($temp_q_id, NULL); -				@pg_free_result($query_id); - -				return ($temp_result) ? $temp_result['last_value'] : false; -			} -		} - -		return false; -	} - -	/** -	* Free sql result -	*/ -	function sql_freeresult($query_id = false) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($cache && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_freeresult($query_id); -		} - -		if (isset($this->open_queries[(int) $query_id])) -		{ -			unset($this->open_queries[(int) $query_id]); -			return @pg_free_result($query_id); -		} - -		return false; -	} - -	/** -	* Escape string used in sql query -	* Note: Do not use for bytea values if we may use them at a later stage -	*/ -	function sql_escape($msg) -	{ -		return @pg_escape_string($msg); -	} - -	/** -	* Build LIKE expression -	* @access private -	*/ -	function _sql_like_expression($expression) -	{ -		return $expression; -	} - -	/** -	* @inheritdoc -	*/ -	function cast_expr_to_bigint($expression) -	{ -		return 'CAST(' . $expression . ' as DECIMAL(255, 0))'; -	} - -	/** -	* @inheritdoc -	*/ -	function cast_expr_to_string($expression) -	{ -		return 'CAST(' . $expression . ' as VARCHAR(255))'; -	} - -	/** -	* return sql error array -	* @access private -	*/ -	function _sql_error() -	{ -		// pg_last_error only works when there is an established connection. -		// Connection errors have to be tracked by us manually. -		if ($this->db_connect_id) -		{ -			$message = @pg_last_error($this->db_connect_id); -		} -		else -		{ -			$message = $this->connect_error; -		} - -		return array( -			'message'	=> $message, -			'code'		=> '' -		); -	} - -	/** -	* Close sql connection -	* @access private -	*/ -	function _sql_close() -	{ -		return @pg_close($this->db_connect_id); -	} - -	/** -	* Build db-specific report -	* @access private -	*/ -	function _sql_report($mode, $query = '') -	{ -		switch ($mode) -		{ -			case 'start': - -				$explain_query = $query; -				if (preg_match('/UPDATE ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) -				{ -					$explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; -				} -				else if (preg_match('/DELETE FROM ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) -				{ -					$explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; -				} - -				if (preg_match('/^SELECT/', $explain_query)) -				{ -					$html_table = false; - -					if ($result = @pg_query($this->db_connect_id, "EXPLAIN $explain_query")) -					{ -						while ($row = @pg_fetch_assoc($result, NULL)) -						{ -							$html_table = $this->sql_report('add_select_row', $query, $html_table, $row); -						} -					} -					@pg_free_result($result); - -					if ($html_table) -					{ -						$this->html_hold .= '</table>'; -					} -				} - -			break; - -			case 'fromcache': -				$endtime = explode(' ', microtime()); -				$endtime = $endtime[0] + $endtime[1]; - -				$result = @pg_query($this->db_connect_id, $query); -				while ($void = @pg_fetch_assoc($result, NULL)) -				{ -					// Take the time spent on parsing rows into account -				} -				@pg_free_result($result); - -				$splittime = explode(' ', microtime()); -				$splittime = $splittime[0] + $splittime[1]; - -				$this->sql_report('record_fromcache', $query, $endtime, $splittime); - -			break; -		} -	} -} | 
