rowcodec

package
v0.0.0-...-503c688 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NilFlag          byte = 0
	BytesFlag        byte = 1
	CompactBytesFlag byte = 2
	IntFlag          byte = 3
	UintFlag         byte = 4
	FloatFlag        byte = 5
	DecimalFlag      byte = 6
	VarintFlag       byte = 8
	VaruintFlag      byte = 9
	JSONFlag         byte = 10
)

First byte in the encoded value which specifies the encoding type.

View Source
const CodecVer = 128

CodecVer is the constant number that represent the new row format.

Variables

This section is empty.

Functions

func FieldTypeFromModelColumn

func FieldTypeFromModelColumn(col *model.ColumnInfo) *types.FieldType

FieldTypeFromModelColumn creates a types.FieldType from model.ColumnInfo. export for test case and CDC.

func IsNewFormat

func IsNewFormat(rowData []byte) bool

IsNewFormat checks whether row data is in new-format.

func IsRowKey

func IsRowKey(key []byte) bool

IsRowKey determine whether key is row key. this method will be used in unistore.

func NewDecoder

func NewDecoder(columns []ColInfo, handleColIDs []int64, loc *time.Location) *decoder

NewDecoder creates a decoder.

Types

type BytesDecoder

type BytesDecoder struct {
	// contains filtered or unexported fields
}

BytesDecoder decodes the row to old datums bytes.

func NewByteDecoder

func NewByteDecoder(columns []ColInfo, handleColIDs []int64, defBytes func(i int) ([]byte, error), loc *time.Location) *BytesDecoder

NewByteDecoder creates a BytesDecoder. defBytes: provided default value bytes in old datum format(flag+colData).

func (*BytesDecoder) DecodeToBytes

func (decoder *BytesDecoder) DecodeToBytes(outputOffset map[int64]int, handle kv.Handle, value []byte, cacheBytes []byte) ([][]byte, error)

DecodeToBytes decodes raw byte slice to row data.

func (*BytesDecoder) DecodeToBytesNoHandle

func (decoder *BytesDecoder) DecodeToBytesNoHandle(outputOffset map[int64]int, value []byte) ([][]byte, error)

DecodeToBytesNoHandle decodes raw byte slice to row data without handle.

type ChunkDecoder

type ChunkDecoder struct {
	// contains filtered or unexported fields
}

ChunkDecoder decodes the row to chunk.Chunk.

func NewChunkDecoder

func NewChunkDecoder(columns []ColInfo, handleColIDs []int64, defDatum func(i int, chk *chunk.Chunk) error, loc *time.Location) *ChunkDecoder

NewChunkDecoder creates a NewChunkDecoder.

func (*ChunkDecoder) DecodeToChunk

func (decoder *ChunkDecoder) DecodeToChunk(rowData []byte, handle kv.Handle, chk *chunk.Chunk) error

DecodeToChunk decodes a row to chunk.

type ColData

type ColData struct {
	*model.ColumnInfo
	Datum *data.Datum
}

ColData combines the column info as well as its datum. It's used to calculate checksum.

func (ColData) Encode

func (c ColData) Encode(buf []byte) ([]byte, error)

Encode encodes the column datum into bytes for checksum. If buf provided, append encoded data to it.

type ColInfo

type ColInfo struct {
	ID            int64
	IsPKHandle    bool
	VirtualGenCol bool
	Ft            *types.FieldType
}

ColInfo is used as column meta info for row decoder.

type DatumMapDecoder

type DatumMapDecoder struct {
	// contains filtered or unexported fields
}

DatumMapDecoder decodes the row to datum map.

func NewDatumMapDecoder

func NewDatumMapDecoder(columns []ColInfo, loc *time.Location) *DatumMapDecoder

NewDatumMapDecoder creates a DatumMapDecoder.

func (*DatumMapDecoder) DecodeToDatumMap

func (decoder *DatumMapDecoder) DecodeToDatumMap(rowData []byte, row map[int64]types.Datum) (map[int64]types.Datum, error)

DecodeToDatumMap decodes byte slices to datum map.

type Encoder

type Encoder struct {

	// Enable indicates whether this encoder should be use.
	Enable bool
	// contains filtered or unexported fields
}

Encoder is used to encode a row.

func (*Encoder) ChecksumVersion

func (r *Encoder) ChecksumVersion() int

ChecksumVersion returns the version of checksum. Note that it's valid only if checksum has been encoded in the row value (callers can check it by `GetChecksum`).

func (*Encoder) ColumnIsNull

func (r *Encoder) ColumnIsNull(rowData []byte, colID int64, defaultVal []byte) (bool, error)

ColumnIsNull returns if the column value is null. Mainly used for count column aggregation. this method will used in unistore.

func (*Encoder) Encode

func (encoder *Encoder) Encode(sc *stmtctx.StatementContext, colIDs []int64, values []types.Datum, buf []byte, checksums ...uint32) ([]byte, error)

Encode encodes a row from a datums slice.

func (*Encoder) GetChecksum

func (r *Encoder) GetChecksum() (uint32, bool)

GetChecksum returns the checksum of row data (not null columns).

func (*Encoder) GetExtraChecksum

func (r *Encoder) GetExtraChecksum() (uint32, bool)

GetExtraChecksum returns the extra checksum which shall be calculated in the last stable schema version (whose elements are all public).

type RowData

type RowData struct {
	// Cols is a list of ColData which is expected to be sorted by id before calling Encode/Checksum.
	Cols []ColData
	// Data stores the result of Encode. However, it mostly acts as a buffer for encoding columns on checksum
	// calculation.
	Data []byte
}

RowData is a list of ColData for row checksum calculation.

func (*RowData) Checksum

func (r *RowData) Checksum() (checksum uint32, err error)

Checksum calculates the checksum of columns. Callers should make sure columns are sorted by id.

func (*RowData) Encode

func (r *RowData) Encode() ([]byte, error)

Encode encodes all columns into bytes (for test purpose).

func (RowData) Len

func (r RowData) Len() int

Len implements sort.Interface for RowData.

func (RowData) Less

func (r RowData) Less(i int, j int) bool

Less implements sort.Interface for RowData.

func (RowData) Swap

func (r RowData) Swap(i int, j int)

Swap implements sort.Interface for RowData.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL