diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2016-09-29 21:05:35 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-10-01 10:01:44 -0400 |
| commit | 6e4e0f4ce48b80495e89abbee030cf49809a9c54 (patch) | |
| tree | 1bc4d4bd8afdd75041551605ada544a783586f9c | |
| parent | fa2f55cfd554c6f99653ffe0d40fd7ca74cb680e (diff) | |
Fixed #26541 -- Allowed MySQL transaction detection to work without table creation.
| -rw-r--r-- | django/db/backends/mysql/features.py | 7 | ||||
| -rw-r--r-- | tests/backends/test_features.py | 19 |
2 files changed, 25 insertions, 1 deletions
diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py index 991a064cee..f8c0ddea00 100644 --- a/django/db/backends/mysql/features.py +++ b/django/db/backends/mysql/features.py @@ -78,3 +78,10 @@ class DatabaseFeatures(BaseDatabaseFeatures): cursor.execute('SELECT @@SQL_AUTO_IS_NULL') result = cursor.fetchone() return result and result[0] == 1 + + @cached_property + def supports_transactions(self): + """ + All storage engines except MyISAM support transactions. + """ + return self._mysql_storage_engine != 'MyISAM' diff --git a/tests/backends/test_features.py b/tests/backends/test_features.py index 831a0002a3..e7cb3dbfe8 100644 --- a/tests/backends/test_features.py +++ b/tests/backends/test_features.py @@ -1,8 +1,25 @@ +from unittest import skipUnless + from django.db import connection -from django.test import TestCase +from django.test import TestCase, mock class TestDatabaseFeatures(TestCase): def test_nonexistent_feature(self): self.assertFalse(hasattr(connection.features, 'nonexistent')) + + +@skipUnless(connection.vendor == 'mysql', 'MySQL backend tests') +class TestMySQLFeatures(TestCase): + + def test_mysql_supports_transactions(self): + """ + All storage engines except MyISAM support transactions. + """ + with mock.patch('django.db.connection.features._mysql_storage_engine', 'InnoDB'): + self.assertTrue(connection.features.supports_transactions) + del connection.features.supports_transactions + with mock.patch('django.db.connection.features._mysql_storage_engine', 'MyISAM'): + self.assertFalse(connection.features.supports_transactions) + del connection.features.supports_transactions |
