diff --git a/dibi/drivers/firebird.php b/dibi/drivers/firebird.php index ee7a5619..b29f3bac 100644 --- a/dibi/drivers/firebird.php +++ b/dibi/drivers/firebird.php @@ -35,6 +35,9 @@ class DibiFirebirdDriver extends DibiObject implements IDibiDriver, IDibiResultD /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var resource Resultset resource */ private $transaction; @@ -359,7 +362,7 @@ class DibiFirebirdDriver extends DibiObject implements IDibiDriver, IDibiResultD */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -431,6 +434,7 @@ class DibiFirebirdDriver extends DibiObject implements IDibiDriver, IDibiResultD */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/mssql.php b/dibi/drivers/mssql.php index 07a4ec0f..06b37fad 100644 --- a/dibi/drivers/mssql.php +++ b/dibi/drivers/mssql.php @@ -34,6 +34,9 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @@ -307,7 +310,7 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -387,6 +390,7 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/mssql2005.php b/dibi/drivers/mssql2005.php index bc578e08..d9b78c35 100644 --- a/dibi/drivers/mssql2005.php +++ b/dibi/drivers/mssql2005.php @@ -34,6 +34,9 @@ class DibiMsSql2005Driver extends DibiObject implements IDibiDriver, IDibiResult /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var int|FALSE Affected rows */ private $affectedRows = FALSE; @@ -314,7 +317,7 @@ class DibiMsSql2005Driver extends DibiObject implements IDibiDriver, IDibiResult */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -393,6 +396,7 @@ class DibiMsSql2005Driver extends DibiObject implements IDibiDriver, IDibiResult */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/mysql.php b/dibi/drivers/mysql.php index 66b750ca..f135714c 100644 --- a/dibi/drivers/mysql.php +++ b/dibi/drivers/mysql.php @@ -46,6 +46,9 @@ class DibiMySqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var bool Is buffered (seekable and countable)? */ private $buffered; @@ -390,7 +393,7 @@ class DibiMySqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -479,6 +482,7 @@ class DibiMySqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriv */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/mysqli.php b/dibi/drivers/mysqli.php index e99b4ccc..42f2e56f 100644 --- a/dibi/drivers/mysqli.php +++ b/dibi/drivers/mysqli.php @@ -47,6 +47,9 @@ class DibiMySqliDriver extends DibiObject implements IDibiDriver, IDibiResultDri /** @var mysqli_result Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var bool Is buffered (seekable and countable)? */ private $buffered; @@ -380,7 +383,7 @@ class DibiMySqliDriver extends DibiObject implements IDibiDriver, IDibiResultDri */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && @$this->free(); } @@ -479,6 +482,7 @@ class DibiMySqliDriver extends DibiObject implements IDibiDriver, IDibiResultDri */ public function getResultResource() { + $this->autoFree = FALSE; return @$this->resultSet->type === NULL ? NULL : $this->resultSet; } diff --git a/dibi/drivers/odbc.php b/dibi/drivers/odbc.php index 524e8a71..fc6e40b6 100644 --- a/dibi/drivers/odbc.php +++ b/dibi/drivers/odbc.php @@ -32,6 +32,9 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver, IDibiResultDrive /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var int|FALSE Affected rows */ private $affectedRows = FALSE; @@ -327,7 +330,7 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver, IDibiResultDrive */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -417,6 +420,7 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver, IDibiResultDrive */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/oracle.php b/dibi/drivers/oracle.php index 64b77b37..242d28cc 100644 --- a/dibi/drivers/oracle.php +++ b/dibi/drivers/oracle.php @@ -34,6 +34,9 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver, IDibiResultDri /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var bool */ private $autocommit = TRUE; @@ -321,7 +324,7 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver, IDibiResultDri */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -400,6 +403,7 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver, IDibiResultDri */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/postgre.php b/dibi/drivers/postgre.php index a04b4665..ebf25ca0 100644 --- a/dibi/drivers/postgre.php +++ b/dibi/drivers/postgre.php @@ -33,6 +33,9 @@ class DibiPostgreDriver extends DibiObject implements IDibiDriver, IDibiResultDr /** @var resource Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var int|FALSE Affected rows */ private $affectedRows = FALSE; @@ -380,7 +383,7 @@ class DibiPostgreDriver extends DibiObject implements IDibiDriver, IDibiResultDr */ public function __destruct() { - $this->getResultResource() && $this->free(); + $this->autoFree && $this->getResultResource() && $this->free(); } @@ -461,6 +464,7 @@ class DibiPostgreDriver extends DibiObject implements IDibiDriver, IDibiResultDr */ public function getResultResource() { + $this->autoFree = FALSE; return is_resource($this->resultSet) ? $this->resultSet : NULL; } diff --git a/dibi/drivers/sqlite3.php b/dibi/drivers/sqlite3.php index 2bf9f8ee..9b6ff450 100644 --- a/dibi/drivers/sqlite3.php +++ b/dibi/drivers/sqlite3.php @@ -36,6 +36,9 @@ class DibiSqlite3Driver extends DibiObject implements IDibiDriver, IDibiResultDr /** @var SQLite3Result Resultset resource */ private $resultSet; + /** @var bool */ + private $autoFree = TRUE; + /** @var string Date and datetime format */ private $fmtDate, $fmtDateTime; @@ -317,7 +320,7 @@ class DibiSqlite3Driver extends DibiObject implements IDibiDriver, IDibiResultDr */ public function __destruct() { - $this->resultSet && @$this->free(); + $this->autoFree && $this->resultSet && @$this->free(); } @@ -411,6 +414,7 @@ class DibiSqlite3Driver extends DibiObject implements IDibiDriver, IDibiResultDr */ public function getResultResource() { + $this->autoFree = FALSE; return $this->resultSet; }