PIBinaryLog recreate index performance patch

This commit is contained in:
2021-06-10 20:05:23 +03:00
parent d71432136c
commit d839832ee6
2 changed files with 4 additions and 1 deletions

View File

@@ -312,7 +312,7 @@ PIP_EXPORT PIByteArray & operator >>(PIByteArray & s, PIByteArray & v);
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details //! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) { inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) {
if (s.size_s() < v.s) { if (s.size_s() < v.s) {
printf("error with RawData %d < %d\n", s.size_s(), v.s); printf("error with RawData %d < %d\n", (int)s.size_s(), v.s);
assert(s.size_s() >= v.s); assert(s.size_s() >= v.s);
} }
if (v.s > 0) { if (v.s > 0) {

View File

@@ -153,6 +153,7 @@ bool PIBinaryLog::openDevice() {
bool PIBinaryLog::closeDevice() { bool PIBinaryLog::closeDevice() {
stopThreadedRead(); stopThreadedRead();
pausemutex.unlock(); pausemutex.unlock();
logmutex.unlock();
moveIndex(-1); moveIndex(-1);
is_indexed = false; is_indexed = false;
index.clear(); index.clear();
@@ -654,7 +655,9 @@ bool PIBinaryLog::createIndex() {
llong cp = file.pos(); llong cp = file.pos();
file.seekToBegin(); file.seekToBegin();
index.clear(); index.clear();
index = PIVector<BinLogIndex>();
index_pos.clear(); index_pos.clear();
index_pos = PIMap<llong, int>();
parseLog(&file, &binfo, &index); parseLog(&file, &binfo, &index);
file.seek(cp); file.seek(cp);
is_indexed = !index.isEmpty(); is_indexed = !index.isEmpty();