Fix too early StopIteration on empty result sets
Fixes #77, thanks to @hfaran for report
This commit is contained in:
parent
582af184de
commit
ea31943e18
@ -24,10 +24,8 @@ class ResultIter(object):
|
|||||||
if not isgenerator(result_proxies):
|
if not isgenerator(result_proxies):
|
||||||
result_proxies = iter((result_proxies, ))
|
result_proxies = iter((result_proxies, ))
|
||||||
self.result_proxies = result_proxies
|
self.result_proxies = result_proxies
|
||||||
|
|
||||||
self.count = 0
|
self.count = 0
|
||||||
if not self._next_rp():
|
self.rp = None
|
||||||
raise StopIteration
|
|
||||||
|
|
||||||
def _next_rp(self):
|
def _next_rp(self):
|
||||||
try:
|
try:
|
||||||
@ -39,6 +37,9 @@ class ResultIter(object):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def __next__(self):
|
def __next__(self):
|
||||||
|
if self.rp is None:
|
||||||
|
if not self._next_rp():
|
||||||
|
raise StopIteration
|
||||||
row = self.rp.fetchone()
|
row = self.rp.fetchone()
|
||||||
if row is None:
|
if row is None:
|
||||||
if self._next_rp():
|
if self._next_rp():
|
||||||
|
|||||||
@ -275,3 +275,8 @@ class TableTestCase(unittest.TestCase):
|
|||||||
keys = list(res.next().keys())
|
keys = list(res.next().keys())
|
||||||
assert keys[0] == 'temperature'
|
assert keys[0] == 'temperature'
|
||||||
assert keys[1] == 'place'
|
assert keys[1] == 'place'
|
||||||
|
|
||||||
|
def test_empty_query(self):
|
||||||
|
m = self.tbl.find(place='not in data')
|
||||||
|
l = list(m) # exhaust iterator
|
||||||
|
assert len(l) == 0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user