diff --git a/decoder.go b/decoder.go index 0e0729b..35e974c 100644 --- a/decoder.go +++ b/decoder.go @@ -188,6 +188,7 @@ func (d *decode) decode() error { if err != nil { return err } + expiry = 0 } } diff --git a/decoder_test.go b/decoder_test.go index 2cb4caf..cb1bf94 100644 --- a/decoder_test.go +++ b/decoder_test.go @@ -38,6 +38,15 @@ func (s *DecoderSuite) TestExpiry(c *C) { c.Assert(r.expiries[0]["expires_ms_precision"], Equals, int64(1671963072573)) } +func (s *DecoderSuite) TestMixedExpiry(c *C) { + r := decodeRDB("keys_with_mixed_expiry") + c.Assert(r.expiries[0]["key01"], Not(Equals), int64(0)) + c.Assert(r.expiries[0]["key04"], Not(Equals), int64(0)) + + c.Assert(r.expiries[0]["key02"], Equals, int64(0)) + c.Assert(r.expiries[0]["key03"], Equals, int64(0)) +} + func (s *DecoderSuite) TestIntegerKeys(c *C) { r := decodeRDB("integer_keys") c.Assert(r.dbs[0]["125"], Equals, "Positive 8 bit integer") diff --git a/fixtures/keys_with_mixed_expiry.rdb b/fixtures/keys_with_mixed_expiry.rdb new file mode 100644 index 0000000..29d9af2 Binary files /dev/null and b/fixtures/keys_with_mixed_expiry.rdb differ