Skip to content

Commit d89fcec

Browse files
committed
Write serialized index in appenddbtoindex
1 parent 79ea1ee commit d89fcec

1 file changed

Lines changed: 12 additions & 14 deletions

File tree

src/util/appenddbtoindex.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,19 @@ int appenddbtoindex(int argc, const char **argv, const Command &command) {
8383
const unsigned int key = keys[i];
8484
const std::string& inDb = par.filenames[i];
8585
const std::string inIndexName = inDb + ".index";
86-
size_t inSize = 0;
87-
FILE* inIndexHandle = FileUtil::openFileOrDie(inIndexName.c_str(), "r", true);
88-
size_t indexSize = 0;
89-
while ((indexSize = fread(buffer, 1, 8192, inIndexHandle)) > 0) {
90-
size_t written = fwrite(buffer, 1, indexSize, outDataHandle);
91-
if (written != indexSize) {
92-
Debug(Debug::ERROR) << "Cannot write to data file " << outDb << "\n";
93-
EXIT(EXIT_FAILURE);
94-
}
95-
inSize += indexSize;
86+
87+
DBReader<unsigned int> reader(inDb.c_str(), inIndexName.c_str(), 1, DBReader<unsigned int>::USE_DATA | DBReader<unsigned int>::USE_INDEX);
88+
reader.open(DBReader<unsigned int>::HARDNOSORT);
89+
90+
char* data = DBReader<unsigned int>::serialize(reader);
91+
size_t inSize = DBReader<unsigned int>::indexMemorySize(reader);
92+
size_t written = fwrite(data, 1, inSize, outDataHandle);
93+
free(data);
94+
if (written != inSize) {
95+
Debug(Debug::ERROR) << "Cannot write to data file " << outDb << "\n";
96+
EXIT(EXIT_FAILURE);
9697
}
97-
fclose(inIndexHandle);
98-
size_t written = fwrite(&nullbyte, sizeof(char), 1, outDataHandle);
98+
written = fwrite(&nullbyte, sizeof(char), 1, outDataHandle);
9999
if (written != 1) {
100100
Debug(Debug::ERROR) << "Cannot write to data file " << outDb << "\n";
101101
EXIT(EXIT_FAILURE);
@@ -109,8 +109,6 @@ int appenddbtoindex(int argc, const char **argv, const Command &command) {
109109
}
110110
offset += inSize;
111111

112-
DBReader<unsigned int> reader(inDb.c_str(), inIndexName.c_str(), 1, DBReader<unsigned int>::USE_DATA | DBReader<unsigned int>::USE_INDEX);
113-
reader.open(DBReader<unsigned int>::HARDNOSORT);
114112
inSize = reader.getTotalDataSize();
115113
for (size_t idx = 0; idx < reader.getDataFileCnt(); idx++) {
116114
char* data = reader.getDataForFile(idx);

0 commit comments

Comments
 (0)