From b65a2001e7be3811903fc8769fa4d3df3d324f18 Mon Sep 17 00:00:00 2001 From: Marc Tamlyn Date: Tue, 15 Jul 2014 12:13:23 +0100 Subject: [PATCH] Fixed #22907 -- Array contains must have same type. --- django/contrib/postgres/fields/array.py | 3 ++- tests/postgres_tests/test_array.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index a33af7be648..772ab9e586d 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -159,7 +159,8 @@ class ArrayContainsLookup(Lookup): lhs, lhs_params = self.process_lhs(qn, connection) rhs, rhs_params = self.process_rhs(qn, connection) params = lhs_params + rhs_params - return '%s @> %s' % (lhs, rhs), params + type_cast = self.lhs.source.db_type(connection) + return '%s @> %s::%s' % (lhs, rhs, type_cast), params ArrayField.register_lookup(ArrayContainsLookup) diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index b8ae48c5bc3..1fc54defe78 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -118,6 +118,13 @@ class TestQuerying(TestCase): self.objs[1:3] ) + def test_contains_charfield(self): + # Regression for #22907 + self.assertSequenceEqual( + CharArrayModel.objects.filter(field__contains=['text']), + [] + ) + def test_index(self): self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__0=2),