diff options
| author | Tom <tom@tomforb.es> | 2017-09-10 15:34:18 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-04-19 10:52:19 -0400 |
| commit | c1c163b42717ed5e051098ebf0e2f5c77810f20e (patch) | |
| tree | b3c42bcf178fe8f33394f41252a92238cb8baff3 /django/db/backends/postgresql/operations.py | |
| parent | df90e462d91d3a77aa89b69d791bf17c2bf7ff9b (diff) | |
Fixed #28574 -- Added QuerySet.explain().
Diffstat (limited to 'django/db/backends/postgresql/operations.py')
| -rw-r--r-- | django/db/backends/postgresql/operations.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py index 6f48cfa228..80a28bce46 100644 --- a/django/db/backends/postgresql/operations.py +++ b/django/db/backends/postgresql/operations.py @@ -7,6 +7,7 @@ from django.db.backends.base.operations import BaseDatabaseOperations class DatabaseOperations(BaseDatabaseOperations): cast_char_field_without_max_length = 'varchar' + explain_prefix = 'EXPLAIN' def unification_cast_sql(self, output_field): internal_type = output_field.get_internal_type() @@ -258,3 +259,17 @@ class DatabaseOperations(BaseDatabaseOperations): 'and FOLLOWING.' ) return start_, end_ + + def explain_query_prefix(self, format=None, **options): + prefix = super().explain_query_prefix(format) + extra = {} + if format: + extra['FORMAT'] = format + if options: + extra.update({ + name.upper(): 'true' if value else 'false' + for name, value in options.items() + }) + if extra: + prefix += ' (%s)' % ', '.join('%s %s' % i for i in extra.items()) + return prefix |
