class TransactionManager
Same name in this branch
- 11.x core/modules/sqlite/src/Driver/Database/sqlite/TransactionManager.php \Drupal\sqlite\Driver\Database\sqlite\TransactionManager
- 11.x core/modules/mysql/src/Driver/Database/mysql/TransactionManager.php \Drupal\mysql\Driver\Database\mysql\TransactionManager
- 11.x core/modules/pgsql/src/Driver/Database/pgsql/TransactionManager.php \Drupal\pgsql\Driver\Database\pgsql\TransactionManager
Same name and namespace in other branches
- 10 core/modules/sqlite/src/Driver/Database/sqlite/TransactionManager.php \Drupal\sqlite\Driver\Database\sqlite\TransactionManager
- 10 core/modules/mysql/src/Driver/Database/mysql/TransactionManager.php \Drupal\mysql\Driver\Database\mysql\TransactionManager
- 10 core/modules/pgsql/src/Driver/Database/pgsql/TransactionManager.php \Drupal\pgsql\Driver\Database\pgsql\TransactionManager
MySqli implementation of TransactionManagerInterface.
Hierarchy
- class \Drupal\Core\Database\Transaction\TransactionManagerBase extends \Drupal\Core\Database\Transaction\TransactionManagerInterface
- class \Drupal\mysqli\Driver\Database\mysqli\TransactionManager implements \Drupal\Core\Database\Transaction\TransactionManagerBase
Expanded class hierarchy of TransactionManager
File
-
core/
modules/ mysqli/ src/ Driver/ Database/ mysqli/ TransactionManager.php, line 13
Namespace
Drupal\mysqli\Driver\Database\mysqliView source
class TransactionManager extends TransactionManagerBase {
/**
* {@inheritdoc}
*/
protected function beginClientTransaction() : bool {
return $this->connection
->getClientConnection()
->begin_transaction();
}
/**
* {@inheritdoc}
*/
protected function addClientSavepoint(string $name) : bool {
return $this->connection
->getClientConnection()
->savepoint($name);
}
/**
* {@inheritdoc}
*/
protected function rollbackClientSavepoint(string $name) : bool {
// Mysqli does not have a rollback_to_savepoint method, and it does not
// allow a prepared statement for 'ROLLBACK TO SAVEPOINT', so we need to
// fallback to querying on the client connection directly.
try {
return (bool) $this->connection
->getClientConnection()
->query('ROLLBACK TO SAVEPOINT ' . $name);
} catch (\mysqli_sql_exception) {
// If the rollback failed, most likely the savepoint was not there
// because the transaction is no longer active. In this case we void the
// transaction stack.
$this->voidClientTransaction();
return TRUE;
}
}
/**
* {@inheritdoc}
*/
protected function releaseClientSavepoint(string $name) : bool {
return $this->connection
->getClientConnection()
->release_savepoint($name);
}
/**
* {@inheritdoc}
*/
protected function rollbackClientTransaction() : bool {
// Note: mysqli::rollback() returns TRUE if there's no active transaction.
// This is diverging from PDO MySql. A PHP bug report exists.
// @see https://bugs.php.net/bug.php?id=81533.
$clientRollback = $this->connection
->getClientConnection()
->rollBack();
$this->setConnectionTransactionState($clientRollback ? ClientConnectionTransactionState::RolledBack : ClientConnectionTransactionState::RollbackFailed);
return $clientRollback;
}
/**
* {@inheritdoc}
*/
protected function commitClientTransaction() : bool {
$clientCommit = $this->connection
->getClientConnection()
->commit();
$this->setConnectionTransactionState($clientCommit ? ClientConnectionTransactionState::Committed : ClientConnectionTransactionState::CommitFailed);
return $clientCommit;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
TransactionManager::addClientSavepoint | protected | function | Adds a savepoint on the client transaction. | Overrides TransactionManagerBase::addClientSavepoint | |
TransactionManager::beginClientTransaction | protected | function | Begins a transaction on the client connection. | Overrides TransactionManagerBase::beginClientTransaction | |
TransactionManager::commitClientTransaction | protected | function | Commits a client transaction. | Overrides TransactionManagerBase::commitClientTransaction | |
TransactionManager::releaseClientSavepoint | protected | function | Releases a savepoint on the client transaction. | Overrides TransactionManagerBase::releaseClientSavepoint | |
TransactionManager::rollbackClientSavepoint | protected | function | Rolls back to a savepoint on the client transaction. | Overrides TransactionManagerBase::rollbackClientSavepoint | |
TransactionManager::rollbackClientTransaction | protected | function | Rolls back a client transaction. | Overrides TransactionManagerBase::rollbackClientTransaction | |
TransactionManagerBase::$connectionTransactionState | private | property | The state of the underlying client connection transaction. | ||
TransactionManagerBase::$postTransactionCallbacks | private | property | A list of post-transaction callbacks. | ||
TransactionManagerBase::$rootId | private | property | The ID of the root Transaction object. | ||
TransactionManagerBase::$stack | private | property | The stack of Drupal transactions currently active. | ||
TransactionManagerBase::$triggerWarningWhenUnpilingOnVoidTransaction | public | property | Whether to trigger warnings when unpiling a void transaction. | ||
TransactionManagerBase::$voidedItems | private | property | A list of voided stack items. | ||
TransactionManagerBase::addPostTransactionCallback | public | function | Adds a root transaction end callback. | Overrides TransactionManagerInterface::addPostTransactionCallback | |
TransactionManagerBase::addStackItem | protected | function | Adds an item to the transaction stack. | ||
TransactionManagerBase::commit | protected | function | Commits a Drupal transaction. | ||
TransactionManagerBase::commitAll | public | function | Commits the entire transaction stack. | ||
TransactionManagerBase::dumpStackItemsAsString | protected | function | Produces a string representation of the stack items. | ||
TransactionManagerBase::getConnectionTransactionState | protected | function | Gets the state of the client connection transaction. | ||
TransactionManagerBase::has | public | function | Checks if a named Drupal transaction is active. | Overrides TransactionManagerInterface::has | |
TransactionManagerBase::inTransaction | public | function | Determines if there is an active transaction open. | Overrides TransactionManagerInterface::inTransaction | |
TransactionManagerBase::processPostTransactionCallbacks | protected | function | Processes the post-transaction callbacks. | ||
TransactionManagerBase::processRootCommit | protected | function | Processes the root transaction commit. | 1 | |
TransactionManagerBase::processRootRollback | protected | function | Processes the root transaction rollback. | ||
TransactionManagerBase::purge | public | function | Purges a Drupal transaction from the manager. | ||
TransactionManagerBase::push | public | function | Pushes a new Drupal transaction on the stack. | Overrides TransactionManagerInterface::push | |
TransactionManagerBase::removeStackItem | protected | function | Removes an item from the transaction stack. | ||
TransactionManagerBase::rollback | public | function | Rolls back a Drupal transaction. | Overrides TransactionManagerInterface::rollback | |
TransactionManagerBase::setConnectionTransactionState | protected | function | Sets the state of the client connection transaction. | ||
TransactionManagerBase::stack | protected | function | Returns the content of the transaction stack. | ||
TransactionManagerBase::stackDepth | public | function | Returns the current depth of the transaction stack. | ||
TransactionManagerBase::unpile | public | function | Removes a Drupal transaction from the stack. | Overrides TransactionManagerInterface::unpile | |
TransactionManagerBase::voidClientTransaction | public | function | Voids the client connection. | Overrides TransactionManagerInterface::voidClientTransaction | |
TransactionManagerBase::voidStackItem | protected | function | Voids an item from the transaction stack. | ||
TransactionManagerBase::__construct | public | function | Constructor. | ||
TransactionManagerBase::__destruct | public | function | Destructor. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.