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
- func RemoveKeyspacePrefix(key []byte) []byte
- type BytesDecoder
- type Checksum
- type ChunkDecoder
- type ColData
- type ColInfo
- type DatumMapDecoder
- type Encoder
- func (r *Encoder) CalculateRawChecksum(loc *time.Location, colIDs []int64, values []*types.Datum, key kv.Key, ...) (uint32, error)
- 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, checksum Checksum, ...) ([]byte, error)
- func (r *Encoder) GetChecksum() (uint32, bool)
- func (r *Encoder) GetExtraChecksum() (uint32, bool)
- type NoChecksum
- type RawChecksum
- 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 VectorFloat32Flag byte = 20 )
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.
func NewDecoder ¶
NewDecoder creates a decoder.
func RemoveKeyspacePrefix ¶
RemoveKeyspacePrefix is used to remove keyspace prefix from the key.
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 Checksum ¶
type Checksum interface {
// contains filtered or unexported methods
}
Checksum is used to calculate and append checksum data into the raw bytes
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) CalculateRawChecksum ¶
func (r *Encoder) CalculateRawChecksum( loc *time.Location, colIDs []int64, values []*types.Datum, key kv.Key, handle kv.Handle, buf []byte, ) (uint32, error)
CalculateRawChecksum calculates the bytes-level checksum by using the given elements. this is mainly used by the TiCDC to implement E2E checksum functionality.
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, checksum Checksum, buf []byte) ([]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`. the caller needs to ensure the key is not nil if checksum is required.
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 NoChecksum ¶
type NoChecksum struct{}
NoChecksum indicates no checksum is encoded into the returned raw bytes.
type RawChecksum ¶
RawChecksum indicates encode the raw bytes checksum and append it to the raw bytes.
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.