(t *testing.T)
| 302 | } |
| 303 | |
| 304 | func 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 | |
| 356 | func TestCutKeyNew(t *testing.T) { |
| 357 | values := []types.Datum{types.NewIntDatum(1), types.NewBytesDatum([]byte("abc")), types.NewFloat64Datum(5.5)} |
nothing calls this directly
no test coverage detected
searching dependent graphs…