(t *testing.T)
| 475 | } |
| 476 | |
| 477 | func TestDecodeIndexKey(t *testing.T) { |
| 478 | tableID := int64(4) |
| 479 | indexID := int64(5) |
| 480 | values := []types.Datum{ |
| 481 | types.NewIntDatum(1), |
| 482 | types.NewBytesDatum([]byte("abc")), |
| 483 | types.NewFloat64Datum(123.45), |
| 484 | // MysqlTime is not supported. |
| 485 | // types.NewTimeDatum(types.Time{ |
| 486 | // Time: types.FromGoTime(time.Now()), |
| 487 | // Fsp: 6, |
| 488 | // Type: mysql.TypeTimestamp, |
| 489 | // }), |
| 490 | } |
| 491 | valueStrs := make([]string, 0, len(values)) |
| 492 | for _, v := range values { |
| 493 | str, err := v.ToString() |
| 494 | if err != nil { |
| 495 | str = fmt.Sprintf("%d-%v", v.Kind(), v.GetValue()) |
| 496 | } |
| 497 | valueStrs = append(valueStrs, str) |
| 498 | } |
| 499 | sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) |
| 500 | encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, values...) |
| 501 | require.NoError(t, err) |
| 502 | indexKey := EncodeIndexSeekKey(tableID, indexID, encodedValue) |
| 503 | |
| 504 | decodeTableID, decodeIndexID, decodeValues, err := DecodeIndexKey(indexKey) |
| 505 | require.NoError(t, err) |
| 506 | require.Equal(t, tableID, decodeTableID) |
| 507 | require.Equal(t, indexID, decodeIndexID) |
| 508 | require.Equal(t, valueStrs, decodeValues) |
| 509 | } |
| 510 | |
| 511 | func TestCutPrefix(t *testing.T) { |
| 512 | key := EncodeTableIndexPrefix(42, 666) |
nothing calls this directly
no test coverage detected