diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-10-04 15:30:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-04 21:30:50 +0200 |
| commit | ea596a52d9f905596cc5335930c8f2ac4511204c (patch) | |
| tree | a2a65ab2441b6191ff08b3769675b03212bf34ce /django | |
| parent | 0989cf13e70f52d5b241aa176eb74a680a282d09 (diff) | |
Refs #33482 -- Fixed QuerySet selecting and filtering againts Exists() with empty queryset.
Thanks Tobias Bengfort for the report.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/expressions.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 30d44650ec..181a04493f 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -1624,6 +1624,15 @@ class Exists(Subquery): sql = "CASE WHEN {} THEN 1 ELSE 0 END".format(sql) return sql, params + def as_sql(self, compiler, *args, **kwargs): + try: + return super().as_sql(compiler, *args, **kwargs) + except EmptyResultSet: + features = compiler.connection.features + if not features.supports_boolean_expr_in_select_clause: + return "1=0", () + return compiler.compile(Value(False)) + @deconstructible(path="django.db.models.OrderBy") class OrderBy(Expression): |
