#28293 closed Bug (fixed)
QuerySet.union(QuerySet.none()) results in an empty queryset, should be the original queryset
Reported by: | Jon Dufresne | Owned by: | Mariusz Felisiak |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.11 |
Severity: | Release blocker | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Tested on Django 1.11.2.
As QuerySet.union()
uses the SQL UNION
operator, I would expect "SET1 UNION <EMPTY SET>" to result in SET1. Currently it results in the empty set.
>>> from django.contrib.auth.models import User >>> User.objects.count() 100 >>> list(User.objects.all().union(User.objects.none())) []
From https://www.postgresql.org/docs/current/static/queries-union.html
UNION effectively appends the result of query2 to the result of query1 ...
QuerySet.difference()
looks to suffer from the same issue.
Change History (5)
comment:1 by , 7 years ago
Severity: | Normal → Release blocker |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 7 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
Note:
See TracTickets
for help on using tickets.
Marking as Release blocker since it's a bug in a newly introduced feature.