NEW Introduce supported database transaction mode check

This commit is contained in:
Michal Kleiner 2019-09-16 14:33:20 +12:00
parent ed64adf12a
commit bcbf90a837
2 changed files with 20 additions and 1 deletions

View File

@ -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
*

View File

@ -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;
}