From ea8cbca579cc6742e119747fc1eb6ecf90638bce Mon Sep 17 00:00:00 2001 From: Tom Forbes Date: Tue, 23 May 2023 18:05:31 +0100 Subject: Made MigrationRecorder cache has_table() result if django_migrations table exists. --- django/db/migrations/recorder.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'django') diff --git a/django/db/migrations/recorder.py b/django/db/migrations/recorder.py index 50876a9ee3..cf0bd4a2ce 100644 --- a/django/db/migrations/recorder.py +++ b/django/db/migrations/recorder.py @@ -47,6 +47,7 @@ class MigrationRecorder: def __init__(self, connection): self.connection = connection + self._has_table = False @property def migration_qs(self): @@ -54,9 +55,16 @@ class MigrationRecorder: def has_table(self): """Return True if the django_migrations table exists.""" + # If the migrations table has already been confirmed to exist, don't + # recheck it's existence. + if self._has_table: + return True + # It hasn't been confirmed to exist, recheck. with self.connection.cursor() as cursor: tables = self.connection.introspection.table_names(cursor) - return self.Migration._meta.db_table in tables + + self._has_table = self.Migration._meta.db_table in tables + return self._has_table def ensure_schema(self): """Ensure the table exists and has the correct schema.""" -- cgit v1.3