1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-17 01:02:23 +03:00

Fixed a boundary condition in metadatafile.

This commit is contained in:
Patrick LeBlanc
2019-04-08 13:52:21 -05:00
parent 88efa1c1f3
commit 06fe98c1a7

View File

@@ -221,11 +221,18 @@ vector<metadataObject> MetadataFile::metadataRead(off_t offset, size_t length) c
vector<metadataObject> ret; vector<metadataObject> ret;
size_t foundLen = 0; size_t foundLen = 0;
if (mObjects.size() == 0)
return ret;
uint64_t lastOffset = mObjects.rbegin()->offset;
auto i = mObjects.begin(); auto i = mObjects.begin();
// find the first object in range // find the first object in range
// Note, the last object in mObjects may not be full, compare the last one against its maximum
// size rather than its current size.
while (i != mObjects.end()) while (i != mObjects.end())
{ {
if ((uint64_t) offset <= (i->offset + i->length - 1)) if ((uint64_t) offset <= (i->offset + i->length - 1) ||
(i->offset == lastOffset && ((uint64_t) offset <= i->offset + mpConfig->mObjectSize - 1)))
break; break;
++i; ++i;
} }