Documentation ¶
Index ¶
- Constants
- func CutOne(b []byte) (data []byte, remain []byte, err error)
- func Decode(b []byte, size int) ([]types.Datum, error)
- func DecodeBytes(b []byte, buf []byte) ([]byte, []byte, error)
- func DecodeBytesDesc(b []byte, buf []byte) ([]byte, []byte, error)
- func DecodeCmpUintToInt(u uint64) int64
- func DecodeCompactBytes(b []byte) ([]byte, []byte, error)
- func DecodeComparableUvarint(b []byte) ([]byte, uint64, error)
- func DecodeComparableVarint(b []byte) ([]byte, int64, error)
- func DecodeDecimal(b []byte) ([]byte, *types.MyDecimal, error)
- func DecodeFloat(b []byte) ([]byte, float64, error)
- func DecodeFloatDesc(b []byte) ([]byte, float64, error)
- func DecodeInt(b []byte) ([]byte, int64, error)
- func DecodeIntDesc(b []byte) ([]byte, int64, error)
- func DecodeOne(b []byte) (remain []byte, d types.Datum, err error)
- func DecodeUint(b []byte) ([]byte, uint64, error)
- func DecodeUintDesc(b []byte) ([]byte, uint64, error)
- func DecodeUvarint(b []byte) ([]byte, uint64, error)
- func DecodeVarint(b []byte) ([]byte, int64, error)
- func EncodeBytes(b []byte, data []byte) []byte
- func EncodeBytesDesc(b []byte, data []byte) []byte
- func EncodeCompactBytes(b []byte, data []byte) []byte
- func EncodeComparableUvarint(b []byte, v uint64) []byte
- func EncodeComparableVarint(b []byte, v int64) []byte
- func EncodeDecimal(b []byte, dec *types.MyDecimal, precision, frac int) []byte
- func EncodeFloat(b []byte, v float64) []byte
- func EncodeFloatDesc(b []byte, v float64) []byte
- func EncodeInt(b []byte, v int64) []byte
- func EncodeIntDesc(b []byte, v int64) []byte
- func EncodeIntToCmpUint(v int64) uint64
- func EncodeKey(sc *stmtctx.StatementContext, b []byte, v ...types.Datum) ([]byte, error)
- func EncodeUint(b []byte, v uint64) []byte
- func EncodeUintDesc(b []byte, v uint64) []byte
- func EncodeUvarint(b []byte, v uint64) []byte
- func EncodeValue(sc *stmtctx.StatementContext, b []byte, v ...types.Datum) ([]byte, error)
- func EncodeVarint(b []byte, v int64) []byte
- func HashChunkRow(sc *stmtctx.StatementContext, b []byte, row chunk.Row, ...) ([]byte, error)
- func HashValues(sc *stmtctx.StatementContext, b []byte, v ...types.Datum) ([]byte, error)
- func SetRawValues(data []byte, values []types.Datum) error
- type Decoder
Constants ¶
const (
NilFlag byte = 0
)
First byte in the encoded value which specifies the encoding type.
Variables ¶
This section is empty.
Functions ¶
func CutOne ¶
CutOne cuts the first encoded value from b. It will return the first encoded item and the remains as byte slice.
func Decode ¶
Decode decodes values from a byte slice generated with EncodeKey or EncodeValue before. size is the size of decoded datum slice.
func DecodeBytes ¶
DecodeBytes decodes bytes which is encoded by EncodeBytes before, returns the leftover bytes and decoded value if no error. `buf` is used to buffer data to avoid the cost of makeslice in decodeBytes when DecodeBytes is called by Decoder.DecodeOne.
func DecodeBytesDesc ¶
DecodeBytesDesc decodes bytes which is encoded by EncodeBytesDesc before, returns the leftover bytes and decoded value if no error.
func DecodeCmpUintToInt ¶
DecodeCmpUintToInt decodes the u that encoded by EncodeIntToCmpUint
func DecodeCompactBytes ¶
DecodeCompactBytes decodes bytes which is encoded by EncodeCompactBytes before.
func DecodeComparableUvarint ¶
DecodeComparableUvarint decodes mem-comparable uvarint.
func DecodeComparableVarint ¶
DecodeComparableVarint decodes mem-comparable varint.
func DecodeDecimal ¶
DecodeDecimal decodes bytes to decimal.
func DecodeFloat ¶
DecodeFloat decodes a float from a byte slice generated with EncodeFloat before.
func DecodeFloatDesc ¶
DecodeFloatDesc decodes a float from a byte slice generated with EncodeFloatDesc before.
func DecodeInt ¶
DecodeInt decodes value encoded by EncodeInt before. It returns the leftover un-decoded slice, decoded value if no error.
func DecodeIntDesc ¶
DecodeIntDesc decodes value encoded by EncodeInt before. It returns the leftover un-decoded slice, decoded value if no error.
func DecodeOne ¶
DecodeOne decodes on datum from a byte slice generated with EncodeKey or EncodeValue.
func DecodeUint ¶
DecodeUint decodes value encoded by EncodeUint before. It returns the leftover un-decoded slice, decoded value if no error.
func DecodeUintDesc ¶
DecodeUintDesc decodes value encoded by EncodeInt before. It returns the leftover un-decoded slice, decoded value if no error.
func DecodeUvarint ¶
DecodeUvarint decodes value encoded by EncodeUvarint before. It returns the leftover un-decoded slice, decoded value if no error.
func DecodeVarint ¶
DecodeVarint decodes value encoded by EncodeVarint before. It returns the leftover un-decoded slice, decoded value if no error.
func EncodeBytes ¶
EncodeBytes guarantees the encoded value is in ascending order for comparison, encoding with the following rule:
[group1][marker1]...[groupN][markerN] group is 8 bytes slice which is padding with 0. marker is `0xFF - padding 0 count`
For example:
[] -> [0, 0, 0, 0, 0, 0, 0, 0, 247] [1, 2, 3] -> [1, 2, 3, 0, 0, 0, 0, 0, 250] [1, 2, 3, 0] -> [1, 2, 3, 0, 0, 0, 0, 0, 251] [1, 2, 3, 4, 5, 6, 7, 8] -> [1, 2, 3, 4, 5, 6, 7, 8, 255, 0, 0, 0, 0, 0, 0, 0, 0, 247]
Refer: https://github.com/facebook/mysql-5.6/wiki/MyRocks-record-format#memcomparable-format
func EncodeBytesDesc ¶
EncodeBytesDesc first encodes bytes using EncodeBytes, then bitwise reverses encoded value to guarantee the encoded value is in descending order for comparison.
func EncodeCompactBytes ¶
EncodeCompactBytes joins bytes with its length into a byte slice. It is more efficient in both space and time compare to EncodeBytes. Note that the encoded result is not memcomparable.
func EncodeComparableUvarint ¶
EncodeComparableUvarint encodes uint64 into mem-comparable bytes.
func EncodeComparableVarint ¶
EncodeComparableVarint encodes an int64 to a mem-comparable bytes.
func EncodeDecimal ¶
EncodeDecimal encodes a decimal into a byte slice which can be sorted lexicographically later.
func EncodeFloat ¶
EncodeFloat encodes a float v into a byte slice which can be sorted lexicographically later. EncodeFloat guarantees that the encoded value is in ascending order for comparison.
func EncodeFloatDesc ¶
EncodeFloatDesc encodes a float v into a byte slice which can be sorted lexicographically later. EncodeFloatDesc guarantees that the encoded value is in descending order for comparison.
func EncodeInt ¶
EncodeInt appends the encoded value to slice b and returns the appended slice. EncodeInt guarantees that the encoded value is in ascending order for comparison.
func EncodeIntDesc ¶
EncodeIntDesc appends the encoded value to slice b and returns the appended slice. EncodeIntDesc guarantees that the encoded value is in descending order for comparison.
func EncodeIntToCmpUint ¶
EncodeIntToCmpUint make int v to comparable uint type
func EncodeKey ¶
EncodeKey appends the encoded values to byte slice b, returns the appended slice. It guarantees the encoded value is in ascending order for comparison. For Decimal type, datum must set datum's length and frac.
func EncodeUint ¶
EncodeUint appends the encoded value to slice b and returns the appended slice. EncodeUint guarantees that the encoded value is in ascending order for comparison.
func EncodeUintDesc ¶
EncodeUintDesc appends the encoded value to slice b and returns the appended slice. EncodeUintDesc guarantees that the encoded value is in descending order for comparison.
func EncodeUvarint ¶
EncodeUvarint appends the encoded value to slice b and returns the appended slice. Note that the encoded result is not memcomparable.
func EncodeValue ¶
EncodeValue appends the encoded values to byte slice b, returning the appended slice. It does not guarantee the order for comparison.
func EncodeVarint ¶
EncodeVarint appends the encoded value to slice b and returns the appended slice. Note that the encoded result is not memcomparable.
func HashChunkRow ¶
func HashChunkRow(sc *stmtctx.StatementContext, b []byte, row chunk.Row, allTypes []*types.FieldType, colIdx []int) ([]byte, error)
HashChunkRow appends the encoded values to byte slice "b", returning the appended slice. If two rows are equal, it will generate the same bytes.
func HashValues ¶
HashValues appends the encoded values to byte slice b, returning the appended slice. If two datums are equal, they will generate the same bytes.
Types ¶
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
Decoder is used to decode value to chunk.
func NewDecoder ¶
NewDecoder creates a Decoder.