diff --git a/storage/local/delta.go b/storage/local/delta.go index 9e04890fe..ebb92e3cd 100644 --- a/storage/local/delta.go +++ b/storage/local/delta.go @@ -156,11 +156,11 @@ func (c deltaEncodedChunk) add(s *metric.SamplePair) []chunk { case d0: // No-op. Constant value is stored as base value. case d1: - c[offset] = byte(dv) + c[offset] = byte(int8(dv)) case d2: - binary.LittleEndian.PutUint16(c[offset:], uint16(dv)) + binary.LittleEndian.PutUint16(c[offset:], uint16(int16(dv))) case d4: - binary.LittleEndian.PutUint32(c[offset:], uint32(dv)) + binary.LittleEndian.PutUint32(c[offset:], uint32(int32(dv))) // d8 must not happen. Those samples are encoded as float64. default: panic("invalid number of bytes for integer delta") diff --git a/storage/local/doubledelta.go b/storage/local/doubledelta.go index 17e2aa5f6..f11471aa5 100644 --- a/storage/local/doubledelta.go +++ b/storage/local/doubledelta.go @@ -164,11 +164,11 @@ func (c doubleDeltaEncodedChunk) add(s *metric.SamplePair) []chunk { case d0: // No-op. Constant delta is stored as base value. case d1: - c[offset] = byte(ddv) + c[offset] = byte(int8(ddv)) case d2: - binary.LittleEndian.PutUint16(c[offset:], uint16(ddv)) + binary.LittleEndian.PutUint16(c[offset:], uint16(int16(ddv))) case d4: - binary.LittleEndian.PutUint32(c[offset:], uint32(ddv)) + binary.LittleEndian.PutUint32(c[offset:], uint32(int32(ddv))) // d8 must not happen. Those samples are encoded as float64. default: panic("invalid number of bytes for integer delta")