lsm-tree-0.1.0.0: Log-structured merge-trees
Safe HaskellSafe-Inferred
LanguageGHC2021

Database.LSMTree.Internal.Serialise.Class

Description

Public API for serialisation of keys, blobs and values

Synopsis

SerialiseKey

class SerialiseKey k where Source #

Serialisation of keys.

Instances should satisfy the following laws:

Identity
deserialiseKey (serialiseKey x) == x
Identity up to slicing
deserialiseKey (packSlice prefix (serialiseKey x) suffix) == x

Instances

Instances details
SerialiseKey ByteArray Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Int16 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Int32 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Int64 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Int8 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Word16 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Word32 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Word64 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Word8 Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey ByteString Source #

serialiseKey: \(O(n)\).

deserialiseKey: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey ByteString Source #

serialiseKey: \(O(n)\).

deserialiseKey: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey ShortByteString Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey String Source #

serialiseKey: \(O(n)\).

deserialiseKey: \(O(n)\).

The String is (de)serialised as UTF-8.

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Int Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseKey Word Source #

serialiseKey: \(O(1)\).

deserialiseKey: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

serialiseKeyIdentity :: (Eq k, SerialiseKey k) => k -> Bool Source #

Test the Identity law for the SerialiseKey class

serialiseKeyIdentityUpToSlicing :: (Eq k, SerialiseKey k) => RawBytes -> k -> RawBytes -> Bool Source #

Test the Identity up to slicing law for the SerialiseKey class

class SerialiseKey k => SerialiseKeyOrderPreserving k Source #

Order-preserving serialisation of keys.

Table data is sorted by serialised keys. Range lookups and cursors return entries in this order. If serialisation does not preserve the ordering of unserialised keys, then range lookups and cursors return entries out of order.

If the SerialiseKey instance for a type preserves the ordering, then it can safely be given an instance of SerialiseKeyOrderPreserving. These should satisfy the following law:

Order-preserving
x `compare` y == serialiseKey x `compare` serialiseKey y

Serialised keys are lexicographically ordered. To satisfy the Order-preserving law, keys should be serialised into a big-endian format.

serialiseKeyPreservesOrdering :: (Ord k, SerialiseKey k) => k -> k -> Bool Source #

Test the Order-preserving law for the SerialiseKeyOrderPreserving class

SerialiseValue

class SerialiseValue v where Source #

Serialisation of values and blobs.

Instances should satisfy the following laws:

Identity
deserialiseValue (serialiseValue x) == x
Identity up to slicing
deserialiseValue (packSlice prefix (serialiseValue x) suffix) == x

Instances

Instances details
SerialiseValue ByteArray Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Void Source #

This instance is intended for tables without blobs.

The implementation of deseriValue throws an excepValuen.

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Int16 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Int32 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Int64 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Int8 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Word16 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Word32 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Word64 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Word8 Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue ByteString Source #

serialiseValue: \(O(n)\).

deserialiseValue: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue ByteString Source #

serialiseValue: \(O(n)\).

deserialiseValue: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue ShortByteString Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue String Source #

serialiseKey: \(O(n)\).

deserialiseKey: \(O(n)\).

The String is (de)serialiseValue as UTF-8.

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Int Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue Word Source #

serialiseValue: \(O(1)\).

deserialiseValue: \(O(1)\).

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue a => SerialiseValue (Sum a) Source #

An instance for Sum which is transparent to the serialisation of the value type.

NOTE: If you want to seriValue Sum a differValuely from a, you must use another newtype wrapper.

Instance details

Defined in Database.LSMTree.Internal.Serialise.Class

SerialiseValue v => SerialiseValue (ResolveAsFirst v) Source # 
Instance details

Defined in Database.LSMTree.Internal.Types

SerialiseValue v => SerialiseValue (ResolveViaSemigroup v) Source # 
Instance details

Defined in Database.LSMTree.Internal.Types

serialiseValueIdentity :: (Eq v, SerialiseValue v) => v -> Bool Source #

Test the Identity law for the SerialiseValue class

serialiseValueIdentityUpToSlicing :: (Eq v, SerialiseValue v) => RawBytes -> v -> RawBytes -> Bool Source #

Test the Identity up to slicing law for the SerialiseValue class

RawBytes

newtype RawBytes Source #

Raw bytes.

This type imposes no alignment constraint and provides no guarantee of whether the memory is pinned or unpinned.

Constructors

RawBytes (Vector Word8) 

Instances

Instances details
IsString RawBytes Source #

fromString: \(O(n)\).

Warning: fromString truncates multi-byte characters to octets. e.g. "枯朶に烏のとまりけり秋の暮" becomes "�6k�nh~�Q��n�".

Instance details

Defined in Database.LSMTree.Internal.RawBytes

Monoid RawBytes Source #

mempty: \(O(1)\).

mconcat: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.RawBytes

Semigroup RawBytes Source #

(<>): \(O(n)\).

sconcat: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.RawBytes

IsList RawBytes Source #

fromList: \(O(n)\).

toList: \(O(n)\).

Instance details

Defined in Database.LSMTree.Internal.RawBytes

Associated Types

type Item RawBytes #

Show RawBytes Source # 
Instance details

Defined in Database.LSMTree.Internal.RawBytes

NFData RawBytes Source # 
Instance details

Defined in Database.LSMTree.Internal.RawBytes

Methods

rnf :: RawBytes -> () #

Eq RawBytes Source # 
Instance details

Defined in Database.LSMTree.Internal.RawBytes

Ord RawBytes Source #

This instance uses lexicographic ordering.

Instance details

Defined in Database.LSMTree.Internal.RawBytes

Hashable RawBytes Source # 
Instance details

Defined in Database.LSMTree.Internal.RawBytes

type Item RawBytes Source # 
Instance details

Defined in Database.LSMTree.Internal.RawBytes

packSlice :: RawBytes -> RawBytes -> RawBytes -> RawBytes Source #

packSlice prefix x suffix makes x into a slice with prefix bytes on the left and suffix bytes on the right.

Errors

requireBytesExactly :: String -> Int -> Int -> a -> a Source #

requireBytesExactly tyName expected actual x