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; 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 * Invoke $callback within a transaction
* *

View File

@ -157,7 +157,12 @@ class TransactionTest extends SapphireTest
public function testReadOnlyTransaction() public function testReadOnlyTransaction()
{ {
if (!DB::get_conn()->supportsTransactions()) { 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; return;
} }