class TransactionSettings in Drupal driver for SQL Server and SQL Azure 8.2
Same name and namespace in other branches
- 8 drivers/lib/Drupal/Driver/Database/sqlsrv/TransactionSettings.php \Drupal\Driver\Database\sqlsrv\TransactionSettings
Behaviour settings for a transaction.
Hierarchy
- class \Drupal\Driver\Database\sqlsrv\TransactionSettings
Expanded class hierarchy of TransactionSettings
6 files declare their use of TransactionSettings
- Connection.php in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Connection.php - Definition of Drupal\Driver\Database\sqlsrv\Connection
- Insert.php in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Insert.php - Definition of Drupal\Driver\Database\sqlsrv\Insert
- Schema.php in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Schema.php - Definition of Drupal\Driver\Database\sqlsrv\Schema
- Transaction.php in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Transaction.php - Definition of Drupal\Driver\Database\sqlsrv\Transaction
- Update.php in drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ Update.php - Definition of Drupal\Driver\Database\sqlsrv\Update
File
- drivers/
lib/ Drupal/ Driver/ Database/ sqlsrv/ TransactionSettings.php, line 13
Namespace
Drupal\Driver\Database\sqlsrvView source
class TransactionSettings {
/**
* Summary of __construct
* @param mixed $Sane
* @param DatabaseTransactionScopeOption $ScopeOption
* @param DatabaseTransactionIsolationLevel $IsolationLevel
*/
public function __construct($Sane = false, DatabaseTransactionScopeOption $ScopeOption = null, DatabaseTransactionIsolationLevel $IsolationLevel = null) {
$this->_Sane = $Sane;
if ($ScopeOption == null) {
$ScopeOption = DatabaseTransactionScopeOption::RequiresNew();
}
if ($IsolationLevel == null) {
$IsolationLevel = DatabaseTransactionIsolationLevel::Unspecified();
}
$this->_IsolationLevel = $IsolationLevel;
$this->_ScopeOption = $ScopeOption;
}
// @var DatabaseTransactionIsolationLevel
private $_IsolationLevel;
// @var DatabaseTransactionScopeOption
private $_ScopeOption;
// @var Boolean
private $_Sane;
/**
* Summary of Get_IsolationLevel
* @return mixed
*/
public function Get_IsolationLevel() {
return $this->_IsolationLevel;
}
/**
* Summary of Get_ScopeOption
* @return mixed
*/
public function Get_ScopeOption() {
return $this->_ScopeOption;
}
/**
* Summary of Get_Sane
* @return mixed
*/
public function Get_Sane() {
return $this->_Sane;
}
/**
* Returns a default setting system-wide to make it compatible
* with Drupal's defaults. Cannot use snapshot isolation because
* it is not compatible with DDL operations and Drupal has nod distinction.
*
* @return TransactionSettings
*/
public static function GetDefaults() {
return new TransactionSettings(false, DatabaseTransactionScopeOption::Required(), DatabaseTransactionIsolationLevel::ReadCommitted());
}
/**
* Proposed better defaults. Use Snapshot isolation when available and
* implicit commits.
*
* @return TransactionSettings
*/
public static function GetBetterDefaults() {
// Use snapshot if available.
$isolation = DatabaseTransactionIsolationLevel::Ignore();
/** @var Connection */
$connection = Database::getConnection();
if ($info = $connection
->Scheme()
->getDatabaseInfo($connection
->getDatabaseName())) {
if ($info->snapshot_isolation_state == true) {
$isolation = DatabaseTransactionIsolationLevel::Snapshot();
}
}
// Otherwise use Drupal's default behaviour (except for nesting!)
return new TransactionSettings(true, DatabaseTransactionScopeOption::Required(), $isolation);
}
/**
* Snapshot isolation is not compatible with DDL operations, use read commited
* with implicit commits.
*
* @return TransactionSettings
*/
public static function GetDDLCompatibleDefaults() {
return new TransactionSettings(true, DatabaseTransactionScopeOption::Required(), DatabaseTransactionIsolationLevel::ReadCommitted());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
TransactionSettings:: |
private | property | ||
TransactionSettings:: |
private | property | ||
TransactionSettings:: |
private | property | ||
TransactionSettings:: |
public static | function | Proposed better defaults. Use Snapshot isolation when available and implicit commits. | |
TransactionSettings:: |
public static | function | Snapshot isolation is not compatible with DDL operations, use read commited with implicit commits. | |
TransactionSettings:: |
public static | function | Returns a default setting system-wide to make it compatible with Drupal's defaults. Cannot use snapshot isolation because it is not compatible with DDL operations and Drupal has nod distinction. | |
TransactionSettings:: |
public | function | Summary of Get_IsolationLevel | |
TransactionSettings:: |
public | function | Summary of Get_Sane | |
TransactionSettings:: |
public | function | Summary of Get_ScopeOption | |
TransactionSettings:: |
public | function | Summary of __construct |