From 6b9bd0933e0ce7e9bfcb2bcc5c8a6dc3486b4257 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 21 Dec 2018 18:26:30 -0500 Subject: [PATCH] Refs #29928 -- Added supports_pragma_foreign_key_check SQLite feature flag. --- django/db/backends/sqlite3/base.py | 2 +- django/db/backends/sqlite3/features.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 5d8f4028c2..1c39fb4add 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -267,7 +267,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): determine if rows with invalid references were entered while constraint checks were off. """ - if Database.sqlite_version_info >= (3, 20, 0): + if self.features.supports_pragma_foreign_key_check: with self.cursor() as cursor: if table_names is None: violations = self.cursor().execute('PRAGMA foreign_key_check').fetchall() diff --git a/django/db/backends/sqlite3/features.py b/django/db/backends/sqlite3/features.py index e315c86712..612ae735be 100644 --- a/django/db/backends/sqlite3/features.py +++ b/django/db/backends/sqlite3/features.py @@ -40,7 +40,8 @@ class DatabaseFeatures(BaseDatabaseFeatures): supports_parentheses_in_compound = False # Deferred constraint checks can be emulated on SQLite < 3.20 but not in a # reasonably performant way. - can_defer_constraint_checks = Database.sqlite_version_info >= (3, 20, 0) + supports_pragma_foreign_key_check = Database.sqlite_version_info >= (3, 20, 0) + can_defer_constraint_checks = supports_pragma_foreign_key_check @cached_property def supports_stddev(self):