1
0
mirror of https://github.com/taigrr/bitcask synced 2025-01-18 04:03:17 -08:00

Add support for unlimited key/value sizes

This commit is contained in:
James Mills 2020-12-12 02:16:36 +10:00
parent 38156e8461
commit 0ab7d79246
No known key found for this signature in database
GPG Key ID: AC4C014F1440EBD6
2 changed files with 3 additions and 3 deletions

View File

@ -179,10 +179,10 @@ func (b *Bitcask) Put(key, value []byte) error {
if len(key) == 0 { if len(key) == 0 {
return ErrEmptyKey return ErrEmptyKey
} }
if uint32(len(key)) > b.config.MaxKeySize { if b.config.MaxKeySize > 0 && uint32(len(key)) > b.config.MaxKeySize {
return ErrKeyTooLarge return ErrKeyTooLarge
} }
if uint64(len(value)) > b.config.MaxValueSize { if b.config.MaxValueSize > 0 && uint64(len(value)) > b.config.MaxValueSize {
return ErrValueTooLarge return ErrValueTooLarge
} }

View File

@ -74,7 +74,7 @@ func getKeyValueSizes(buf []byte, maxKeySize uint32, maxValueSize uint64) (uint3
actualKeySize := binary.BigEndian.Uint32(buf[:keySize]) actualKeySize := binary.BigEndian.Uint32(buf[:keySize])
actualValueSize := binary.BigEndian.Uint64(buf[keySize:]) actualValueSize := binary.BigEndian.Uint64(buf[keySize:])
if actualKeySize > maxKeySize || actualValueSize > maxValueSize || actualKeySize == 0 { if (maxKeySize > 0 && actualKeySize > maxKeySize) || (maxValueSize > 0 && actualValueSize > maxValueSize) || actualKeySize == 0 {
return 0, 0, errInvalidKeyOrValueSize return 0, 0, errInvalidKeyOrValueSize
} }