1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-12 17:14:16 +02:00

- implemented savepoints support

This commit is contained in:
David Grudl
2008-11-17 16:17:16 +00:00
parent 2f690b63f9
commit fb2621eb04
12 changed files with 107 additions and 59 deletions

View File

@@ -137,7 +137,7 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver
if (is_resource($res)) {
$row = mssql_fetch_row($res);
return $row[0];
}
}
return FALSE;
}
@@ -145,10 +145,11 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->query('BEGIN TRANSACTION');
}
@@ -157,10 +158,11 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
$this->query('COMMIT');
}
@@ -169,10 +171,11 @@ class DibiMsSqlDriver extends DibiObject implements IDibiDriver
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
$this->query('ROLLBACK');
}

View File

@@ -199,36 +199,39 @@ class DibiMySqlDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->query('START TRANSACTION');
$this->query($savepoint ? "SAVEPOINT $savepoint" : 'START TRANSACTION');
}
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
$this->query('COMMIT');
$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
}
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
$this->query('ROLLBACK');
$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
}

View File

@@ -183,36 +183,39 @@ class DibiMySqliDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->query('START TRANSACTION');
$this->query($savepoint ? "SAVEPOINT $savepoint" : 'START TRANSACTION');
}
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
$this->query('COMMIT');
$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
}
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
$this->query('ROLLBACK');
$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
}

View File

@@ -143,10 +143,11 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
if (!odbc_autocommit($this->connection, FALSE)) {
throw new DibiDriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
@@ -157,10 +158,11 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
if (!odbc_commit($this->connection)) {
throw new DibiDriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));
@@ -172,10 +174,11 @@ class DibiOdbcDriver extends DibiObject implements IDibiDriver
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
if (!odbc_rollback($this->connection)) {
throw new DibiDriverException(odbc_errormsg($this->connection) . ' ' . odbc_error($this->connection));

View File

@@ -144,10 +144,11 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->autocommit = FALSE;
}
@@ -156,10 +157,11 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
if (!oci_commit($this->connection)) {
$err = oci_error($this->connection);
@@ -172,10 +174,11 @@ class DibiOracleDriver extends DibiObject implements IDibiDriver
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
if (!oci_rollback($this->connection)) {
$err = oci_error($this->connection);

View File

@@ -165,10 +165,11 @@ class DibiPdoDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
if (!$this->connection->beginTransaction()) {
$err = $this->connection->errorInfo();
@@ -180,10 +181,11 @@ class DibiPdoDriver extends DibiObject implements IDibiDriver
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
if (!$this->connection->commit()) {
$err = $this->connection->errorInfo();
@@ -195,10 +197,11 @@ class DibiPdoDriver extends DibiObject implements IDibiDriver
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
if (!$this->connection->rollBack()) {
$err = $this->connection->errorInfo();

View File

@@ -175,36 +175,39 @@ class DibiPostgreDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->query('START TRANSACTION');
$this->query($savepoint ? "SAVEPOINT $savepoint" : 'START TRANSACTION');
}
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
$this->query('COMMIT');
$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
}
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
$this->query('ROLLBACK');
$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
}

View File

@@ -151,10 +151,11 @@ class DibiSqliteDriver extends DibiObject implements IDibiDriver
/**
* Begins a transaction (if supported).
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function begin()
public function begin($savepoint = NULL)
{
$this->query('BEGIN');
}
@@ -163,10 +164,11 @@ class DibiSqliteDriver extends DibiObject implements IDibiDriver
/**
* Commits statements in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function commit()
public function commit($savepoint = NULL)
{
$this->query('COMMIT');
}
@@ -175,10 +177,11 @@ class DibiSqliteDriver extends DibiObject implements IDibiDriver
/**
* Rollback changes in a transaction.
* @param string optinal savepoint name
* @return void
* @throws DibiDriverException
*/
public function rollback()
public function rollback($savepoint = NULL)
{
$this->query('ROLLBACK');
}