Opened 7 years ago

Last modified 7 years ago

#28378 closed Bug

QuerySet.union() with queryset that raises EmptyResultSet results in an empty set — at Initial Version

Reported by: Jon Dufresne Owned by: nobody
Component: Database layer (models, ORM) Version: 1.11
Severity: Release blocker Keywords:
Cc: Mariusz Felisiak Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Similar and followup to ticket #28293. Tested on Django 1.11.3.

As QuerySet.union() uses the SQL UNION operator, I would expect "SET1 UNION <EMPTY SET>" to result in SET1. If the empty set is the results of EmpytResultSet being raised, the .uion() result is an empty set, not SET1.

Example test case:

>>> import django
>>> django.__version__
'1.11.3'
>>> from django.contrib.auth.models import User
>>> qs1 = User.objects.all() 
>>> qs1.count()
100
>>> qs2 = User.objects.filter(pk__in=[])
>>> qs2.count()
0
>>> list(qs1.union(qs2))
[]

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top