|
a/src/python/recoll/pyrecoll.cpp |
|
b/src/python/recoll/pyrecoll.cpp |
|
... |
|
... |
1033 |
(recoll_DocObject *)PyObject_CallObject((PyObject *)&recoll_DocType, 0);
|
1033 |
(recoll_DocObject *)PyObject_CallObject((PyObject *)&recoll_DocType, 0);
|
1034 |
if (!result) {
|
1034 |
if (!result) {
|
1035 |
PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
|
1035 |
PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
|
1036 |
return 0;
|
1036 |
return 0;
|
1037 |
}
|
1037 |
}
|
1038 |
if (self->next >= self->rowcount) {
|
1038 |
|
|
|
1039 |
// We used to check against rowcount here, but this was wrong:
|
|
|
1040 |
// xapian result count estimate are sometimes wrong, we must go on
|
|
|
1041 |
// fetching until we fail
|
|
|
1042 |
if (!self->query->getDoc(self->next, *result->doc)) {
|
1039 |
PyErr_SetNone(PyExc_StopIteration);
|
1043 |
PyErr_SetNone(PyExc_StopIteration);
|
1040 |
return 0;
|
|
|
1041 |
}
|
|
|
1042 |
if (!self->query->getDoc(self->next, *result->doc)) {
|
|
|
1043 |
PyErr_SetString(PyExc_EnvironmentError, "query: cant fetch result");
|
|
|
1044 |
self->next = -1;
|
|
|
1045 |
return 0;
|
1044 |
return 0;
|
1046 |
}
|
1045 |
}
|
1047 |
self->next++;
|
1046 |
self->next++;
|
1048 |
|
1047 |
|
1049 |
movedocfields(result->doc);
|
1048 |
movedocfields(result->doc);
|
|
... |
|
... |
1079 |
PyErr_SetString(PyExc_AttributeError, "query: no results");
|
1078 |
PyErr_SetString(PyExc_AttributeError, "query: no results");
|
1080 |
return 0;
|
1079 |
return 0;
|
1081 |
}
|
1080 |
}
|
1082 |
|
1081 |
|
1083 |
PyObject *reslist = PyList_New(0);
|
1082 |
PyObject *reslist = PyList_New(0);
|
1084 |
int howmany = MIN(self->rowcount - self->next, size);
|
|
|
1085 |
for (int i = 0; i < howmany; i++) {
|
1083 |
for (int i = 0; i < size; i++) {
|
1086 |
recoll_DocObject *docobj = (recoll_DocObject *)
|
1084 |
recoll_DocObject *docobj = (recoll_DocObject *)
|
1087 |
PyObject_CallObject((PyObject *)&recoll_DocType, 0);
|
1085 |
PyObject_CallObject((PyObject *)&recoll_DocType, 0);
|
1088 |
if (!docobj) {
|
1086 |
if (!docobj) {
|
1089 |
PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
|
1087 |
PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
|
1090 |
return 0;
|
1088 |
return 0;
|
1091 |
}
|
1089 |
}
|
1092 |
if (!self->query->getDoc(self->next, *docobj->doc)) {
|
1090 |
if (!self->query->getDoc(self->next, *docobj->doc)) {
|
1093 |
PyErr_SetString(PyExc_EnvironmentError, "can't fetch");
|
1091 |
PyErr_SetNone(PyExc_StopIteration);
|
1094 |
self->next = -1;
|
|
|
1095 |
return 0;
|
1092 |
break;
|
1096 |
}
|
1093 |
}
|
1097 |
self->next++;
|
1094 |
self->next++;
|
1098 |
movedocfields(docobj->doc);
|
1095 |
movedocfields(docobj->doc);
|
1099 |
PyList_Append(reslist, (PyObject*)docobj);
|
1096 |
PyList_Append(reslist, (PyObject*)docobj);
|
1100 |
}
|
1097 |
}
|