|
a/src/rcldb/rcldb.cpp |
|
b/src/rcldb/rcldb.cpp |
|
... |
|
... |
1368 |
LOGDEB(("Db::needUpdate:no: [%s]\n", uniterm.c_str()));
|
1368 |
LOGDEB(("Db::needUpdate:no: [%s]\n", uniterm.c_str()));
|
1369 |
|
1369 |
|
1370 |
// Up to date.
|
1370 |
// Up to date.
|
1371 |
|
1371 |
|
1372 |
// Set the uptodate flag for doc / pseudo doc
|
1372 |
// Set the uptodate flag for doc / pseudo doc
|
|
|
1373 |
if (m_mode != DbRO) {
|
1373 |
updated[*docid] = true;
|
1374 |
updated[*docid] = true;
|
1374 |
|
1375 |
|
1375 |
// Set the existence flag for all the subdocs (if any)
|
1376 |
// Set the existence flag for all the subdocs (if any)
|
1376 |
vector<Xapian::docid> docids;
|
1377 |
vector<Xapian::docid> docids;
|
1377 |
if (!m_ndb->subDocs(udi, docids)) {
|
1378 |
if (!m_ndb->subDocs(udi, docids)) {
|
1378 |
LOGERR(("Rcl::Db::needUpdate: can't get subdocs list\n"));
|
1379 |
LOGERR(("Rcl::Db::needUpdate: can't get subdocs list\n"));
|
1379 |
return true;
|
1380 |
return true;
|
1380 |
}
|
1381 |
}
|
1381 |
for (vector<Xapian::docid>::iterator it = docids.begin();
|
1382 |
for (vector<Xapian::docid>::iterator it = docids.begin();
|
1382 |
it != docids.end(); it++) {
|
1383 |
it != docids.end(); it++) {
|
1383 |
if (*it < updated.size()) {
|
1384 |
if (*it < updated.size()) {
|
1384 |
LOGDEB2(("Db::needUpdate: set flag for docid %d\n", *it));
|
1385 |
LOGDEB2(("Db::needUpdate: set flag for docid %d\n", *it));
|
1385 |
updated[*it] = true;
|
1386 |
updated[*it] = true;
|
|
|
1387 |
}
|
1386 |
}
|
1388 |
}
|
1387 |
}
|
1389 |
}
|
1388 |
return false;
|
1390 |
return false;
|
1389 |
} catch (const Xapian::DatabaseModifiedError &e) {
|
1391 |
} catch (const Xapian::DatabaseModifiedError &e) {
|
1390 |
LOGDEB(("Db::needUpdate: got modified error. reopen/retry\n"));
|
1392 |
LOGDEB(("Db::needUpdate: got modified error. reopen/retry\n"));
|