Documentation ¶
Index ¶
- Constants
- func FieldTypeFromModelColumn(col *model.ColumnInfo) *types.FieldType
- func IsNewFormat(rowData []byte) bool
- func IsRowKey(key []byte) bool
- func NewDecoder(columns []ColInfo, handleColIDs []int64, loc *time.Location) *decoder
- type BytesDecoder
- type ChunkDecoder
- type ColData
- type ColInfo
- type DatumMapDecoder
- type Encoder
- func (r *Encoder) ChecksumVersion() int
- func (r *Encoder) ColumnIsNull(rowData []byte, colID int64, defaultVal []byte) (bool, error)
- func (encoder *Encoder) Encode(loc *time.Location, colIDs []int64, values []types.Datum, buf []byte, ...) ([]byte, error)
- func (r *Encoder) GetChecksum() (uint32, bool)
- func (r *Encoder) GetExtraChecksum() (uint32, bool)
- type RowData
Constants ¶
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.
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 ¶
IsNewFormat checks whether row data is in new-format.
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.
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.
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 ¶
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(loc *time.Location, colIDs []int64, values []types.Datum, buf []byte, checksums ...uint32) ([]byte, error)
Encode encodes a row from a datums slice. `buf` is not truncated before encoding. This function may return both a valid encoded bytes and an error (actually `"pingcap/errors".ErrorGroup`). If the caller expects to handle these errors according to `SQL_MODE` or other configuration, please refer to `pkg/errctx`.
func (*Encoder) GetChecksum ¶
GetChecksum returns the checksum of row data (not null columns).
func (*Encoder) GetExtraChecksum ¶
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 ¶
Checksum calculates the checksum of columns. Callers should make sure columns are sorted by id.