RedwoodRecordRef::deltaSize() now calculates actual delta size instead of a conservative estimate.

This commit is contained in:
Stephen Atherton 2019-05-29 18:06:11 -07:00
parent 3e155a2563
commit 098ac46af9
1 changed files with 5 additions and 1 deletions

View File

@ -535,6 +535,9 @@ struct RedwoodRecordRef {
} }
size += std::max(0, intFieldArraySize - intFieldPrefixLen - trailingNulls); size += std::max(0, intFieldArraySize - intFieldPrefixLen - trailingNulls);
if(intFieldPrefixLen == 0 && version == 0) {
size -= 8;
}
} }
return size; return size;
@ -3210,7 +3213,8 @@ void deltaTest(RedwoodRecordRef rec, RedwoodRecordRef base) {
int deltaSize = rec.writeDelta(d, base); int deltaSize = rec.writeDelta(d, base);
RedwoodRecordRef decoded = d.apply(base, mem); RedwoodRecordRef decoded = d.apply(base, mem);
if(decoded != rec || expectedSize < deltaSize) { if(decoded != rec || expectedSize != deltaSize) {
printf("\n");
printf("Base: %s\n", base.toString().c_str()); printf("Base: %s\n", base.toString().c_str());
printf("ExpectedSize: %d\n", expectedSize); printf("ExpectedSize: %d\n", expectedSize);
printf("DeltaSize: %d\n", deltaSize); printf("DeltaSize: %d\n", deltaSize);