MCPcopy Create free account
hub / github.com/pingcap/tidb / TestCutRow

Function TestCutRow

pkg/tablecodec/tablecodec_test.go:304–354  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

302}
303
304func TestCutRow(t *testing.T) {
305 var err error
306 c1 := &column{id: 1, tp: types.NewFieldType(mysql.TypeLonglong)}
307 c2 := &column{id: 2, tp: types.NewFieldType(mysql.TypeVarchar)}
308 c3 := &column{id: 3, tp: types.NewFieldType(mysql.TypeNewDecimal)}
309 cols := []*column{c1, c2, c3}
310
311 row := make([]types.Datum, 3)
312 row[0] = types.NewIntDatum(100)
313 row[1] = types.NewBytesDatum([]byte("abc"))
314 row[2] = types.NewDecimalDatum(types.NewDecFromInt(1))
315
316 sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC)
317 data := make([][]byte, 3)
318 data[0], err = EncodeValue(sc.TimeZone(), nil, row[0])
319 require.NoError(t, err)
320 data[1], err = EncodeValue(sc.TimeZone(), nil, row[1])
321 require.NoError(t, err)
322 data[2], err = EncodeValue(sc.TimeZone(), nil, row[2])
323 require.NoError(t, err)
324 // Encode
325 colIDs := make([]int64, 0, 3)
326 for _, col := range cols {
327 colIDs = append(colIDs, col.id)
328 }
329 bs, err := EncodeOldRow(sc.TimeZone(), row, colIDs, nil, nil)
330 require.NoError(t, err)
331 require.NotNil(t, bs)
332
333 // Decode
334 colMap := make(map[int64]int, 3)
335 for i, col := range cols {
336 colMap[col.id] = i
337 }
338 r, err := CutRowNew(bs, colMap)
339 require.NoError(t, err)
340 require.NotNil(t, r)
341 require.Len(t, r, 3)
342 // Compare cut row and original row
343 for i := range colIDs {
344 require.Equal(t, data[i], r[i])
345 }
346 bs = []byte{codec.NilFlag}
347 r, err = CutRowNew(bs, colMap)
348 require.NoError(t, err)
349 require.Nil(t, r)
350 bs = nil
351 r, err = CutRowNew(bs, colMap)
352 require.NoError(t, err)
353 require.Nil(t, r)
354}
355
356func TestCutKeyNew(t *testing.T) {
357 values := []types.Datum{types.NewIntDatum(1), types.NewBytesDatum([]byte("abc")), types.NewFloat64Datum(5.5)}

Callers

nothing calls this directly

Calls 13

NewFieldTypeFunction · 0.92
NewIntDatumFunction · 0.92
NewBytesDatumFunction · 0.92
NewDecimalDatumFunction · 0.92
NewDecFromIntFunction · 0.92
NewStmtCtxWithTimeZoneFunction · 0.92
EncodeOldRowFunction · 0.85
CutRowNewFunction · 0.85
TimeZoneMethod · 0.80
NotNilMethod · 0.80
EncodeValueFunction · 0.70
LenMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…