From 29b7652f5a3e045ed16b7ef1f74e5dd3ec82a046 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Sun, 29 Jan 2023 18:02:43 +0800 Subject: [PATCH 1/2] done Signed-off-by: wjhuang2016 --- server/http_handler.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server/http_handler.go b/server/http_handler.go index 6044f82861386..2855186b9cdfa 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -206,7 +206,7 @@ func (t *tikvHandlerTool) getHandle(tb table.PhysicalTable, params map[string]st return handle, nil } -func (t *tikvHandlerTool) getMvccByIdxValue(idx table.Index, values url.Values, idxCols []*model.ColumnInfo, handle kv.Handle) (*helper.MvccKV, error) { +func (t *tikvHandlerTool) getMvccByIdxValue(idx table.Index, values url.Values, idxCols []*model.ColumnInfo, handle kv.Handle) ([]*helper.MvccKV, error) { sc := new(stmtctx.StatementContext) // HTTP request is not a database session, set timezone to UTC directly here. // See https://github.com/pingcap/tidb/blob/master/docs/tidb_http_api.md for more details. @@ -227,7 +227,18 @@ func (t *tikvHandlerTool) getMvccByIdxValue(idx table.Index, values url.Values, if err != nil { return nil, err } - return &helper.MvccKV{Key: strings.ToUpper(hex.EncodeToString(encodedKey)), RegionID: regionID, Value: data}, err + idxData := &helper.MvccKV{Key: strings.ToUpper(hex.EncodeToString(encodedKey)), RegionID: regionID, Value: data} + tablecodec.IndexKey2TempIndexKey(idx.Meta().ID, encodedKey) + data, err = t.GetMvccByEncodedKey(encodedKey) + if err != nil { + return nil, err + } + regionID, err = t.getRegionIDByKey(encodedKey) + if err != nil { + return nil, err + } + tempIdxData := &helper.MvccKV{Key: strings.ToUpper(hex.EncodeToString(encodedKey)), RegionID: regionID, Value: data} + return append([]*helper.MvccKV{}, idxData, tempIdxData), err } // formValue2DatumRow converts URL query string to a Datum Row. From 4472faf9b1dde37c495445b7f31aac342637b803 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Sun, 29 Jan 2023 18:36:58 +0800 Subject: [PATCH 2/2] fix test Signed-off-by: wjhuang2016 --- server/http_handler_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/http_handler_test.go b/server/http_handler_test.go index 7d2b8c3867bf5..c28967abf06ee 100644 --- a/server/http_handler_test.go +++ b/server/http_handler_test.go @@ -539,16 +539,16 @@ partition by range (a) func decodeKeyMvcc(closer io.ReadCloser, t *testing.T, valid bool) { decoder := json.NewDecoder(closer) - var data helper.MvccKV + var data []helper.MvccKV err := decoder.Decode(&data) require.NoError(t, err) if valid { - require.NotNil(t, data.Value.Info) - require.Greater(t, len(data.Value.Info.Writes), 0) + require.NotNil(t, data[0].Value.Info) + require.Greater(t, len(data[0].Value.Info.Writes), 0) } else { - require.Nil(t, data.Value.Info.Lock) - require.Nil(t, data.Value.Info.Writes) - require.Nil(t, data.Value.Info.Values) + require.Nil(t, data[0].Value.Info.Lock) + require.Nil(t, data[0].Value.Info.Writes) + require.Nil(t, data[0].Value.Info.Values) } }