NEW Introduce supported database transaction mode check
This commit is contained in:
parent
ed64adf12a
commit
bcbf90a837
|
@ -656,6 +656,20 @@ abstract class Database
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determines if the used database supports given transactionMode as an argument to startTransaction()
|
||||
* If transactions are completely unsupported, returns false.
|
||||
*
|
||||
* @param string $mode
|
||||
* @return bool
|
||||
*/
|
||||
public function supportsTransactionMode(string $mode): bool
|
||||
{
|
||||
// Default implementation: assume all modes are a supported.
|
||||
return $this->supportsTransactions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke $callback within a transaction
|
||||
*
|
||||
|
|
|
@ -157,7 +157,12 @@ class TransactionTest extends SapphireTest
|
|||
public function testReadOnlyTransaction()
|
||||
{
|
||||
if (!DB::get_conn()->supportsTransactions()) {
|
||||
$this->markTestSkipped('Current database is doesn\'t support transactions');
|
||||
$this->markTestSkipped('Current database doesn\'t support transactions');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!DB::get_conn()->supportsTransactionMode('READ ONLY')) {
|
||||
$this->markTestSkipped('Current database doesn\'t support READ ONLY transactions');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue