mirror of
https://github.com/django/django.git
synced 2025-09-24 19:23:03 +00:00
Refs #33374 -- Adjusted full match condition handling.
Adjusting WhereNode.as_sql() to raise an exception when encoutering a full match just like with empty matches ensures that all case are explicitly handled.
This commit is contained in:
parent
4b702c832c
commit
76e37513e2
11 changed files with 114 additions and 61 deletions
|
@ -5,7 +5,7 @@ import unittest
|
|||
from operator import attrgetter
|
||||
from threading import Lock
|
||||
|
||||
from django.core.exceptions import EmptyResultSet, FieldError
|
||||
from django.core.exceptions import EmptyResultSet, FieldError, FullResultSet
|
||||
from django.db import DEFAULT_DB_ALIAS, connection
|
||||
from django.db.models import CharField, Count, Exists, F, Max, OuterRef, Q
|
||||
from django.db.models.expressions import RawSQL
|
||||
|
@ -3588,7 +3588,8 @@ class WhereNodeTest(SimpleTestCase):
|
|||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w.negate()
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w = WhereNode(children=[self.DummyNode(), self.DummyNode()])
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("(dummy AND dummy)", []))
|
||||
w.negate()
|
||||
|
@ -3597,7 +3598,8 @@ class WhereNodeTest(SimpleTestCase):
|
|||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w.negate()
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
|
||||
def test_empty_full_handling_disjunction(self):
|
||||
compiler = WhereNodeTest.MockCompiler()
|
||||
|
@ -3605,7 +3607,8 @@ class WhereNodeTest(SimpleTestCase):
|
|||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w.negate()
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w = WhereNode(children=[self.DummyNode(), self.DummyNode()], connector=OR)
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("(dummy OR dummy)", []))
|
||||
w.negate()
|
||||
|
@ -3619,7 +3622,8 @@ class WhereNodeTest(SimpleTestCase):
|
|||
compiler = WhereNodeTest.MockCompiler()
|
||||
empty_w = WhereNode()
|
||||
w = WhereNode(children=[empty_w, empty_w])
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w.negate()
|
||||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
|
@ -3627,9 +3631,11 @@ class WhereNodeTest(SimpleTestCase):
|
|||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w.negate()
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w = WhereNode(children=[empty_w, NothingNode()], connector=OR)
|
||||
self.assertEqual(w.as_sql(compiler, connection), ("", []))
|
||||
with self.assertRaises(FullResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
w = WhereNode(children=[empty_w, NothingNode()], connector=AND)
|
||||
with self.assertRaises(EmptyResultSet):
|
||||
w.as_sql(compiler, connection)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue