Merge pull request #9240 from chrometoasters/pulls/db-readonly-transactions-support

NEW Introduce supported database transaction mode check
This commit is contained in:
Sam Minnée 2019-09-25 10:02:53 +12:00 committed by GitHub
commit af6644f762
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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;
}