Merge pull request #6 from jimmytaker/omaster

Use bigger buffer when reading big blobs to increase performance
This commit is contained in:
Cyber Emissary
2018-02-12 15:48:30 -05:00
committed by GitHub

View File

@@ -604,18 +604,18 @@ void*
mdb_ole_read_full(MdbHandle *mdb, MdbColumn *col, size_t *size)
{
char ole_ptr[MDB_MEMO_OVERHEAD];
char *result = malloc(MDB_BIND_SIZE);
size_t result_buffer_size = MDB_BIND_SIZE;
char *result = malloc(MDB_BIND_SIZE * 64);
size_t result_buffer_size = MDB_BIND_SIZE * 64;
size_t len, pos;
memcpy(ole_ptr, col->bind_ptr, MDB_MEMO_OVERHEAD);
len = mdb_ole_read(mdb, col, ole_ptr, MDB_BIND_SIZE);
len = mdb_ole_read(mdb, col, ole_ptr, MDB_BIND_SIZE * 64);
memcpy(result, col->bind_ptr, len);
pos = len;
while ((len = mdb_ole_read_next(mdb, col, ole_ptr))) {
if (pos+len >= result_buffer_size) {
result_buffer_size += MDB_BIND_SIZE;
result_buffer_size += MDB_BIND_SIZE * 64;
result = realloc(result, result_buffer_size);
}
memcpy(result + pos, col->bind_ptr, len);