PYTHON-1371 - The tailable cursor cannot get document through __getitem__(index) on MongoDB v3.4
Fix issue and add test case.
This commit is contained in:
parent
74605b73f6
commit
db57f671dc
@ -79,3 +79,4 @@ The following is a list of people who have contributed to
|
||||
- Len Buckens (buckensl)
|
||||
- ultrabug
|
||||
- Shane Harvey (ShaneHarvey)
|
||||
- Cao Siyang (caosiyang)
|
||||
|
||||
@ -590,6 +590,7 @@ class Cursor(object):
|
||||
clone = self.clone()
|
||||
clone.skip(index + self.__skip)
|
||||
clone.limit(-1) # use a hard limit
|
||||
clone.__query_flags &= ~CursorType.TAILABLE_AWAIT # PYTHON-1371
|
||||
for doc in clone:
|
||||
return doc
|
||||
raise IndexError("no such item for Cursor instance")
|
||||
|
||||
@ -1133,6 +1133,26 @@ class TestCursor(IntegrationTest):
|
||||
|
||||
self.assertEqual(3, db.test.count())
|
||||
|
||||
# __getitem__(index)
|
||||
for cursor in (db.test.find(cursor_type=CursorType.TAILABLE),
|
||||
db.test.find(cursor_type=CursorType.TAILABLE_AWAIT)):
|
||||
self.assertEqual(4, cursor[0]["x"])
|
||||
self.assertEqual(5, cursor[1]["x"])
|
||||
self.assertEqual(6, cursor[2]["x"])
|
||||
|
||||
cursor.rewind()
|
||||
self.assertEqual([4], [doc["x"] for doc in cursor[0:1]])
|
||||
cursor.rewind()
|
||||
self.assertEqual([5], [doc["x"] for doc in cursor[1:2]])
|
||||
cursor.rewind()
|
||||
self.assertEqual([6], [doc["x"] for doc in cursor[2:3]])
|
||||
cursor.rewind()
|
||||
self.assertEqual([4, 5], [doc["x"] for doc in cursor[0:2]])
|
||||
cursor.rewind()
|
||||
self.assertEqual([5, 6], [doc["x"] for doc in cursor[1:3]])
|
||||
cursor.rewind()
|
||||
self.assertEqual([4, 5, 6], [doc["x"] for doc in cursor[0:3]])
|
||||
|
||||
def test_distinct(self):
|
||||
self.db.drop_collection("test")
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user