summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-05-18 12:08:36 +0200
committerClaude Paroz <claude@2xlibre.net>2012-05-18 12:12:45 +0200
commit7549de841c6e0d18822af047763f5e3211539be8 (patch)
treecd5e446841fa574696481f323f6e1ca4930d3030
parent7495730d32498c7ee8113e190ece98ab3ce45a30 (diff)
Fixed #18334 -- Fixed detection of supports_stddev backend feature.
Thanks to Michael Manfre for the report and Anssi Kääriäinen for the review.
-rw-r--r--django/db/backends/__init__.py12
-rw-r--r--tests/regressiontests/backends/tests.py6
2 files changed, 13 insertions, 5 deletions
diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py
index 27623505e5..bf622b9a0f 100644
--- a/django/db/backends/__init__.py
+++ b/django/db/backends/__init__.py
@@ -414,10 +414,11 @@ class BaseDatabaseFeatures(object):
def confirm(self):
"Perform manual checks of any database features that might vary between installs"
- self._confirmed = True
- self.supports_transactions = self._supports_transactions()
- self.supports_stddev = self._supports_stddev()
- self.can_introspect_foreign_keys = self._can_introspect_foreign_keys()
+ if not self._confirmed:
+ self._confirmed = True
+ self.supports_transactions = self._supports_transactions()
+ self.supports_stddev = self._supports_stddev()
+ self.can_introspect_foreign_keys = self._can_introspect_foreign_keys()
def _supports_transactions(self):
"Confirm support for transactions"
@@ -439,8 +440,9 @@ class BaseDatabaseFeatures(object):
try:
self.connection.ops.check_aggregate_support(StdDevPop())
+ return True
except NotImplementedError:
- self.supports_stddev = False
+ return False
def _can_introspect_foreign_keys(self):
"Confirm support for introspected foreign keys"
diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py
index eec817c5a2..10e69b65c1 100644
--- a/tests/regressiontests/backends/tests.py
+++ b/tests/regressiontests/backends/tests.py
@@ -397,6 +397,12 @@ class BackendTestCase(TestCase):
self.assertTrue(hasattr(connection.ops, 'connection'))
self.assertEqual(connection, connection.ops.connection)
+ def test_supports_needed_confirm(self):
+ connection.features.confirm()
+ self.assertIn(connection.features.supports_transactions, (True, False))
+ self.assertIn(connection.features.supports_stddev, (True, False))
+ self.assertIn(connection.features.can_introspect_foreign_keys, (True, False))
+
def test_duplicate_table_error(self):
""" Test that creating an existing table returns a DatabaseError """
cursor = connection.cursor()