mirror of
https://github.com/Infinidat/infi.clickhouse_orm.git
synced 2024-11-22 09:06:41 +03:00
Bug fix: QuerySet.count()
ignores slicing
This commit is contained in:
parent
928e41b82c
commit
f2a731711d
|
@ -1,6 +1,10 @@
|
||||||
Change Log
|
Change Log
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
Unreleased
|
||||||
|
----------
|
||||||
|
- Bug fix: `QuerySet.count()` ignores slicing
|
||||||
|
|
||||||
v1.0.2
|
v1.0.2
|
||||||
----------
|
----------
|
||||||
- Include alias and materialized fields in queryset results
|
- Include alias and materialized fields in queryset results
|
||||||
|
|
|
@ -316,11 +316,12 @@ class QuerySet(object):
|
||||||
"""
|
"""
|
||||||
Returns the number of matching model instances.
|
Returns the number of matching model instances.
|
||||||
"""
|
"""
|
||||||
if self._distinct:
|
if self._distinct or self._limits:
|
||||||
# Use a subquery, since a simple count won't be accurate
|
# Use a subquery, since a simple count won't be accurate
|
||||||
sql = u'SELECT count() FROM (%s)' % self.as_sql()
|
sql = u'SELECT count() FROM (%s)' % self.as_sql()
|
||||||
raw = self._database.raw(sql)
|
raw = self._database.raw(sql)
|
||||||
return int(raw) if raw else 0
|
return int(raw) if raw else 0
|
||||||
|
# Simple case
|
||||||
return self._database.count(self._model_cls, self.conditions_as_sql())
|
return self._database.count(self._model_cls, self.conditions_as_sql())
|
||||||
|
|
||||||
def order_by(self, *field_names):
|
def order_by(self, *field_names):
|
||||||
|
|
|
@ -239,6 +239,12 @@ class QuerySetTestCase(TestCaseWithData):
|
||||||
for obj in qs:
|
for obj in qs:
|
||||||
self.assertTrue(obj.num_squared == obj.num ** 2)
|
self.assertTrue(obj.num_squared == obj.num ** 2)
|
||||||
|
|
||||||
|
def test_count_of_slice(self):
|
||||||
|
qs = Person.objects_in(self.database)
|
||||||
|
self._test_qs(qs[:70], 70)
|
||||||
|
self._test_qs(qs[70:80], 10)
|
||||||
|
self._test_qs(qs[80:], 20)
|
||||||
|
|
||||||
|
|
||||||
class AggregateTestCase(TestCaseWithData):
|
class AggregateTestCase(TestCaseWithData):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user