func encodeColumnKV(tid, handle, cid int64, value types.Datum) (kv.Key, []byte, error) { key := tablecodec.EncodeColumnKey(tid, handle, cid) val, err := codec.EncodeValue(nil, value) if err != nil { return nil, nil, errors.Trace(err) } return key, val, nil }
func (ts *testSuite) TestRowKeyCodec(c *C) { table := []struct { tableID int64 h int64 ID int64 }{ {1, 1234567890, 0}, {2, 1, 0}, {3, -1, 0}, {4, -1, 1}, } for _, t := range table { b := tablecodec.EncodeColumnKey(t.tableID, t.h, t.ID) tableID, handle, columnID, err := tablecodec.DecodeRecordKey(b) c.Assert(err, IsNil) c.Assert(tableID, Equals, t.tableID) c.Assert(handle, Equals, t.h) c.Assert(columnID, Equals, t.ID) handle, err = tablecodec.DecodeRowKey(b) c.Assert(err, IsNil) c.Assert(handle, Equals, t.h) } // test error tbl := []string{ "", "x", "t1", "t12345678", "t12345678_i", "t12345678_r1", "t12345678_r1234567", "t12345678_r123456781", } for _, t := range tbl { _, err := tablecodec.DecodeRowKey(kv.Key(t)) c.Assert(err, NotNil) } }