Remove (most of) error suppression from database drivers (issue #3036)
diff --git a/system/database/drivers/cubrid/cubrid_driver.php b/system/database/drivers/cubrid/cubrid_driver.php
index 2e79faa..138b0ed 100644
--- a/system/database/drivers/cubrid/cubrid_driver.php
+++ b/system/database/drivers/cubrid/cubrid_driver.php
@@ -172,7 +172,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @cubrid_query($sql, $this->conn_id);
+		return cubrid_query($sql, $this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -283,7 +283,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @cubrid_affected_rows();
+		return cubrid_affected_rows();
 	}
 
 	// --------------------------------------------------------------------
@@ -295,7 +295,7 @@
 	 */
 	public function insert_id()
 	{
-		return @cubrid_insert_id($this->conn_id);
+		return cubrid_insert_id($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -418,7 +418,7 @@
 	 */
 	protected function _close()
 	{
-		@cubrid_close($this->conn_id);
+		cubrid_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/cubrid/cubrid_result.php b/system/database/drivers/cubrid/cubrid_result.php
index 76a479a..d2bdeb0 100644
--- a/system/database/drivers/cubrid/cubrid_result.php
+++ b/system/database/drivers/cubrid/cubrid_result.php
@@ -47,7 +47,7 @@
 	{
 		return is_int($this->num_rows)
 			? $this->num_rows
-			: $this->num_rows = @cubrid_num_rows($this->result_id);
+			: $this->num_rows = cubrid_num_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -59,7 +59,7 @@
 	 */
 	public function num_fields()
 	{
-		return @cubrid_num_fields($this->result_id);
+		return cubrid_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/ibase/ibase_driver.php b/system/database/drivers/ibase/ibase_driver.php
index b9eabd0..b19985c 100644
--- a/system/database/drivers/ibase/ibase_driver.php
+++ b/system/database/drivers/ibase/ibase_driver.php
@@ -115,7 +115,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @ibase_query($this->conn_id, $sql);
+		return ibase_query($this->conn_id, $sql);
 	}
 
 	// --------------------------------------------------------------------
@@ -139,7 +139,7 @@
 		// even if the queries produce a successful result.
 		$this->_trans_failure = ($test_mode === TRUE);
 
-		$this->_ibase_trans = @ibase_trans($this->conn_id);
+		$this->_ibase_trans = ibase_trans($this->conn_id);
 
 		return TRUE;
 	}
@@ -159,7 +159,7 @@
 			return TRUE;
 		}
 
-		return @ibase_commit($this->_ibase_trans);
+		return ibase_commit($this->_ibase_trans);
 	}
 
 	// --------------------------------------------------------------------
@@ -177,7 +177,7 @@
 			return TRUE;
 		}
 
-		return @ibase_rollback($this->_ibase_trans);
+		return ibase_rollback($this->_ibase_trans);
 	}
 
 	// --------------------------------------------------------------------
@@ -189,7 +189,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @ibase_affected_rows($this->conn_id);
+		return ibase_affected_rows($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -392,7 +392,7 @@
 	 */
 	protected function _close()
 	{
-		@ibase_close($this->conn_id);
+		ibase_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/ibase/ibase_result.php b/system/database/drivers/ibase/ibase_result.php
index 1f89db6..cb2c7f4 100644
--- a/system/database/drivers/ibase/ibase_result.php
+++ b/system/database/drivers/ibase/ibase_result.php
@@ -45,7 +45,7 @@
 	 */
 	public function num_fields()
 	{
-		return @ibase_num_fields($this->result_id);
+		return ibase_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -103,7 +103,7 @@
 	 */
 	public function free_result()
 	{
-		@ibase_free_result($this->result_id);
+		ibase_free_result($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -117,7 +117,7 @@
 	 */
 	protected function _fetch_assoc()
 	{
-		return @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS);
+		return ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS);
 	}
 
 	// --------------------------------------------------------------------
@@ -132,7 +132,7 @@
 	 */
 	protected function _fetch_object($class_name = 'stdClass')
 	{
-		$row = @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS);
+		$row = ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS);
 
 		if ($class_name === 'stdClass' OR ! $row)
 		{
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index afe80e8..f4a1661 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -142,9 +142,9 @@
 			$database = $this->database;
 		}
 
-		// Note: The brackets are required in the event that the DB name
+		// Note: Escaping is required in the event that the DB name
 		// contains reserved characters
-		if (@mssql_select_db($this->escape_identifiers($database), $this->conn_id))
+		if (mssql_select_db($this->escape_identifiers($database), $this->conn_id))
 		{
 			$this->database = $database;
 			return TRUE;
@@ -163,7 +163,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @mssql_query($sql, $this->conn_id);
+		return mssql_query($sql, $this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -235,7 +235,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @mssql_rows_affected($this->conn_id);
+		return mssql_rows_affected($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -519,7 +519,7 @@
 	 */
 	protected function _close()
 	{
-		@mssql_close($this->conn_id);
+		mssql_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/mssql/mssql_result.php b/system/database/drivers/mssql/mssql_result.php
index cce9374..f3ee987 100644
--- a/system/database/drivers/mssql/mssql_result.php
+++ b/system/database/drivers/mssql/mssql_result.php
@@ -47,7 +47,7 @@
 	{
 		return is_int($this->num_rows)
 			? $this->num_rows
-			: $this->num_rows = @mssql_num_rows($this->result_id);
+			: $this->num_rows = mssql_num_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -59,7 +59,7 @@
 	 */
 	public function num_fields()
 	{
-		return @mssql_num_fields($this->result_id);
+		return mssql_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -167,7 +167,7 @@
 	 */
 	protected function _fetch_object($class_name = 'stdClass')
 	{
-		$row = @mssql_fetch_object($this->result_id);
+		$row = mssql_fetch_object($this->result_id);
 
 		if ($class_name === 'stdClass' OR ! $row)
 		{
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 9fbd94c..7cbcf10 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -119,6 +119,7 @@
 			$client_flags = $client_flags | MYSQL_CLIENT_SSL;
 		}
 
+		// Error suppression is necessary mostly due to PHP 5.5+ issuing E_DEPRECATED messages
 		$this->conn_id = ($persistent === TRUE)
 			? @mysql_pconnect($this->hostname, $this->username, $this->password, $client_flags)
 			: @mysql_connect($this->hostname, $this->username, $this->password, TRUE, $client_flags);
@@ -176,7 +177,7 @@
 			$database = $this->database;
 		}
 
-		if (@mysql_select_db($database, $this->conn_id))
+		if (mysql_select_db($database, $this->conn_id))
 		{
 			$this->database = $database;
 			return TRUE;
@@ -195,7 +196,7 @@
 	 */
 	protected function _db_set_charset($charset)
 	{
-		return @mysql_set_charset($charset, $this->conn_id);
+		return mysql_set_charset($charset, $this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -216,7 +217,7 @@
 			$this->initialize();
 		}
 
-		if ( ! $this->conn_id OR ($version = @mysql_get_server_info($this->conn_id)) === FALSE)
+		if ( ! $this->conn_id OR ($version = mysql_get_server_info($this->conn_id)) === FALSE)
 		{
 			return FALSE;
 		}
@@ -234,7 +235,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @mysql_query($this->_prep_query($sql), $this->conn_id);
+		return mysql_query($this->_prep_query($sql), $this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -349,7 +350,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @mysql_affected_rows($this->conn_id);
+		return mysql_affected_rows($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -361,7 +362,7 @@
 	 */
 	public function insert_id()
 	{
-		return @mysql_insert_id($this->conn_id);
+		return mysql_insert_id($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -484,6 +485,8 @@
 	 */
 	protected function _close()
 	{
+		// Error suppression to avoid annoying E_WARNINGs in cases
+		// where the connection has already been closed for some reason.
 		@mysql_close($this->conn_id);
 	}
 
diff --git a/system/database/drivers/mysql/mysql_result.php b/system/database/drivers/mysql/mysql_result.php
index c232b5c..68860e6 100644
--- a/system/database/drivers/mysql/mysql_result.php
+++ b/system/database/drivers/mysql/mysql_result.php
@@ -50,7 +50,7 @@
 
 		// Required, due to mysql_data_seek() causing nightmares
 		// with empty result sets
-		$this->num_rows = @mysql_num_rows($this->result_id);
+		$this->num_rows = mysql_num_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -74,7 +74,7 @@
 	 */
 	public function num_fields()
 	{
-		return @mysql_num_fields($this->result_id);
+		return mysql_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -153,7 +153,7 @@
 	public function data_seek($n = 0)
 	{
 		return $this->num_rows
-			? @mysql_data_seek($this->result_id, $n)
+			? mysql_data_seek($this->result_id, $n)
 			: FALSE;
 	}
 
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 316f17a..f34c0d1 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -261,7 +261,7 @@
 		$this->stmt_id = FALSE;
 		$this->_set_stmt_id($sql);
 		oci_set_prefetch($this->stmt_id, 1000);
-		return @oci_execute($this->stmt_id, $this->commit_mode);
+		return oci_execute($this->stmt_id, $this->commit_mode);
 	}
 
 	// --------------------------------------------------------------------
@@ -451,7 +451,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @oci_num_rows($this->stmt_id);
+		return oci_num_rows($this->stmt_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -697,7 +697,7 @@
 	 */
 	protected function _close()
 	{
-		@oci_close($this->conn_id);
+		oci_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index 1776462..50612ca 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -94,7 +94,7 @@
 	 */
 	public function num_fields()
 	{
-		$count = @oci_num_fields($this->stmt_id);
+		$count = oci_num_fields($this->stmt_id);
 
 		// if we used a limit we subtract it
 		return ($this->limit_used) ? $count - 1 : $count;
@@ -183,7 +183,7 @@
 	protected function _fetch_assoc()
 	{
 		$id = ($this->curs_id) ? $this->curs_id : $this->stmt_id;
-		return @oci_fetch_assoc($id);
+		return oci_fetch_assoc($id);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 14c85c8..06c24d6 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -124,7 +124,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @odbc_exec($this->conn_id, $sql);
+		return odbc_exec($this->conn_id, $sql);
 	}
 
 	// --------------------------------------------------------------------
@@ -213,7 +213,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @odbc_num_rows($this->result_id);
+		return odbc_num_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -357,7 +357,7 @@
 	 */
 	protected function _close()
 	{
-		@odbc_close($this->conn_id);
+		odbc_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/odbc/odbc_result.php b/system/database/drivers/odbc/odbc_result.php
index 5b2df39..3a101cd 100644
--- a/system/database/drivers/odbc/odbc_result.php
+++ b/system/database/drivers/odbc/odbc_result.php
@@ -49,7 +49,7 @@
 		{
 			return $this->num_rows;
 		}
-		elseif (($this->num_rows = @odbc_num_rows($this->result_id)) !== -1)
+		elseif (($this->num_rows = odbc_num_rows($this->result_id)) !== -1)
 		{
 			return $this->num_rows;
 		}
@@ -76,7 +76,7 @@
 	 */
 	public function num_fields()
 	{
-		return @odbc_num_fields($this->result_id);
+		return odbc_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php
index 904bdd5..1b8fbc9 100644
--- a/system/database/drivers/pdo/pdo_result.php
+++ b/system/database/drivers/pdo/pdo_result.php
@@ -91,6 +91,8 @@
 		$field_names = array();
 		for ($i = 0, $c = $this->num_fields(); $i < $c; $i++)
 		{
+			// Might trigger an E_WARNING due to not all subdrivers
+			// supporting getColumnMeta()
 			$field_names[$i] = @$this->result_id->getColumnMeta();
 			$field_names[$i] = $field_names[$i]['name'];
 		}
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 6a22097..c380a7c 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -233,7 +233,7 @@
 	 */
 	protected function _execute($sql)
 	{
-		return @pg_query($this->conn_id, $sql);
+		return pg_query($this->conn_id, $sql);
 	}
 
 	// --------------------------------------------------------------------
@@ -257,7 +257,7 @@
 		// even if the queries produce a successful result.
 		$this->_trans_failure = ($test_mode === TRUE);
 
-		return (bool) @pg_query($this->conn_id, 'BEGIN');
+		return (bool) pg_query($this->conn_id, 'BEGIN');
 	}
 
 	// --------------------------------------------------------------------
@@ -275,7 +275,7 @@
 			return TRUE;
 		}
 
-		return (bool) @pg_query($this->conn_id, 'COMMIT');
+		return (bool) pg_query($this->conn_id, 'COMMIT');
 	}
 
 	// --------------------------------------------------------------------
@@ -293,7 +293,7 @@
 			return TRUE;
 		}
 
-		return (bool) @pg_query($this->conn_id, 'ROLLBACK');
+		return (bool) pg_query($this->conn_id, 'ROLLBACK');
 	}
 
 	// --------------------------------------------------------------------
@@ -355,7 +355,7 @@
 	 */
 	public function affected_rows()
 	{
-		return @pg_affected_rows($this->result_id);
+		return pg_affected_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -632,7 +632,7 @@
 	 */
 	protected function _close()
 	{
-		@pg_close($this->conn_id);
+		pg_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/postgre/postgre_result.php b/system/database/drivers/postgre/postgre_result.php
index ec484e9..ab04af1 100644
--- a/system/database/drivers/postgre/postgre_result.php
+++ b/system/database/drivers/postgre/postgre_result.php
@@ -47,7 +47,7 @@
 	{
 		return is_int($this->num_rows)
 			? $this->num_rows
-			: $this->num_rows = @pg_num_rows($this->result_id);
+			: $this->num_rows = pg_num_rows($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -59,7 +59,7 @@
 	 */
 	public function num_fields()
 	{
-		return @pg_num_fields($this->result_id);
+		return pg_num_fields($this->result_id);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index dd9e1e8..a5dd6e0 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -102,8 +102,8 @@
 	protected function _execute($sql)
 	{
 		return $this->is_write_type($sql)
-			? @sqlite_exec($this->conn_id, $sql)
-			: @sqlite_query($this->conn_id, $sql);
+			? sqlite_exec($this->conn_id, $sql)
+			: sqlite_query($this->conn_id, $sql);
 	}
 
 	// --------------------------------------------------------------------
@@ -203,7 +203,7 @@
 	 */
 	public function insert_id()
 	{
-		return @sqlite_last_insert_rowid($this->conn_id);
+		return sqlite_last_insert_rowid($this->conn_id);
 	}
 
 	// --------------------------------------------------------------------
@@ -345,7 +345,7 @@
 	 */
 	protected function _close()
 	{
-		@sqlite_close($this->conn_id);
+		sqlite_close($this->conn_id);
 	}
 
 }
diff --git a/system/database/drivers/sqlsrv/sqlsrv_driver.php b/system/database/drivers/sqlsrv/sqlsrv_driver.php
index 58f2e34..ec983d5 100644
--- a/system/database/drivers/sqlsrv/sqlsrv_driver.php
+++ b/system/database/drivers/sqlsrv/sqlsrv_driver.php
@@ -556,7 +556,7 @@
 	 */
 	protected function _close()
 	{
-		@sqlsrv_close($this->conn_id);
+		sqlsrv_close($this->conn_id);
 	}
 
 }