diff --git a/src/Database/LSMTree/Internal/Serialise/Class.hs b/src/Database/LSMTree/Internal/Serialise/Class.hs index 75d73f6c0..c7859ed56 100644 --- a/src/Database/LSMTree/Internal/Serialise/Class.hs +++ b/src/Database/LSMTree/Internal/Serialise/Class.hs @@ -510,11 +510,13 @@ instance SerialiseValue P.ByteArray where Void -------------------------------------------------------------------------------} -{- | -This instance is intended for tables without blobs. +-- | The implementation of 'deserialiseKey' throws an exception. +instance SerialiseKey Void where + serialiseKey = absurd + deserialiseKey = error "deserialiseKey: cannot deserialise into Void" -The implementation of @'deserialiseValue'@ throws an excepValuen. --} + +-- | The implementation of 'deserialiseValue' throws an exception. instance SerialiseValue Void where serialiseValue = absurd deserialiseValue = error "deserialiseValue: cannot deserialise into Void" diff --git a/src/Database/LSMTree/Internal/Types.hs b/src/Database/LSMTree/Internal/Types.hs index ca8031cef..0d7db7131 100644 --- a/src/Database/LSMTree/Internal/Types.hs +++ b/src/Database/LSMTree/Internal/Types.hs @@ -19,6 +19,7 @@ import Control.DeepSeq (NFData (..), deepseq) import Data.Kind (Type) import Data.Semigroup (Sum) import Data.Typeable +import Data.Void (Void) import Data.Word (Word64) import qualified Database.LSMTree.Internal.BlobRef as Unsafe import Database.LSMTree.Internal.RawBytes (RawBytes (..)) @@ -225,4 +226,6 @@ instance ResolveValue (ResolveAsFirst v) where resolveSerialised :: Proxy (ResolveAsFirst v) -> RawBytes -> RawBytes -> RawBytes resolveSerialised _p = const +deriving via ResolveViaSemigroup Void instance ResolveValue Void + deriving via (ResolveViaSemigroup (Sum v)) instance (Num v, SerialiseValue v) => ResolveValue (Sum v)