From 97a9bf8f94b58f204d854af2d6629c094150b0ea Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Thu, 25 Jan 2024 12:30:21 +0800 Subject: [PATCH] *: memory is not allocated first if the user does not use some information from the table. (#50062) (#50171) close pingcap/tidb#50077 --- table/tables/tables.go | 35 +++++++++++++++-------------------- table/tables/tables_test.go | 6 ------ tablecodec/tablecodec.go | 2 +- 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/table/tables/tables.go b/table/tables/tables.go index a18896ce07f94..082715d571b1c 100644 --- a/table/tables/tables.go +++ b/table/tables/tables.go @@ -61,11 +61,11 @@ type TableCommon struct { // physicalTableID is a unique int64 to identify a physical table. physicalTableID int64 Columns []*table.Column - PublicColumns []*table.Column - VisibleColumns []*table.Column - HiddenColumns []*table.Column - WritableColumns []*table.Column - FullHiddenColsAndVisibleColumns []*table.Column + publicColumns []*table.Column + visibleColumns []*table.Column + hiddenColumns []*table.Column + writableColumns []*table.Column + fullHiddenColsAndVisibleColumns []*table.Column indices []table.Index meta *model.TableInfo allocs autoid.Allocators @@ -169,11 +169,6 @@ func initTableCommon(t *TableCommon, tblInfo *model.TableInfo, physicalTableID i t.allocs = allocs t.meta = tblInfo t.Columns = cols - t.PublicColumns = t.Cols() - t.VisibleColumns = t.VisibleCols() - t.HiddenColumns = t.HiddenCols() - t.WritableColumns = t.WritableCols() - t.FullHiddenColsAndVisibleColumns = t.FullHiddenColsAndVisibleCols() t.recordPrefix = tablecodec.GenTableRecordPrefix(physicalTableID) t.indexPrefix = tablecodec.GenTableIndexPrefix(physicalTableID) if tblInfo.IsSequence() { @@ -260,32 +255,32 @@ func (t *TableCommon) getCols(mode getColsMode) []*table.Column { // Cols implements table.Table Cols interface. func (t *TableCommon) Cols() []*table.Column { - if len(t.PublicColumns) > 0 { - return t.PublicColumns + if len(t.publicColumns) > 0 { + return t.publicColumns } return t.getCols(full) } // VisibleCols implements table.Table VisibleCols interface. func (t *TableCommon) VisibleCols() []*table.Column { - if len(t.VisibleColumns) > 0 { - return t.VisibleColumns + if len(t.visibleColumns) > 0 { + return t.visibleColumns } return t.getCols(visible) } // HiddenCols implements table.Table HiddenCols interface. func (t *TableCommon) HiddenCols() []*table.Column { - if len(t.HiddenColumns) > 0 { - return t.HiddenColumns + if len(t.hiddenColumns) > 0 { + return t.hiddenColumns } return t.getCols(hidden) } // WritableCols implements table WritableCols interface. func (t *TableCommon) WritableCols() []*table.Column { - if len(t.WritableColumns) > 0 { - return t.WritableColumns + if len(t.writableColumns) > 0 { + return t.writableColumns } writableColumns := make([]*table.Column, 0, len(t.Columns)) for _, col := range t.Columns { @@ -304,8 +299,8 @@ func (t *TableCommon) DeletableCols() []*table.Column { // FullHiddenColsAndVisibleCols implements table FullHiddenColsAndVisibleCols interface. func (t *TableCommon) FullHiddenColsAndVisibleCols() []*table.Column { - if len(t.FullHiddenColsAndVisibleColumns) > 0 { - return t.FullHiddenColsAndVisibleColumns + if len(t.fullHiddenColsAndVisibleColumns) > 0 { + return t.fullHiddenColsAndVisibleColumns } cols := make([]*table.Column, 0, len(t.Columns)) diff --git a/table/tables/tables_test.go b/table/tables/tables_test.go index 661770b868383..28502e75e57e8 100644 --- a/table/tables/tables_test.go +++ b/table/tables/tables_test.go @@ -449,12 +449,6 @@ func TestHiddenColumn(t *testing.T) { colInfo[1].Hidden = true colInfo[3].Hidden = true colInfo[5].Hidden = true - tc := tb.(*tables.TableCommon) - // Reset related caches - tc.VisibleColumns = nil - tc.WritableColumns = nil - tc.HiddenColumns = nil - tc.FullHiddenColsAndVisibleColumns = nil // Basic test cols := tb.VisibleCols() diff --git a/tablecodec/tablecodec.go b/tablecodec/tablecodec.go index 022caefaa9ec4..8766b188d9164 100644 --- a/tablecodec/tablecodec.go +++ b/tablecodec/tablecodec.go @@ -958,7 +958,7 @@ func decodeIntHandleInIndexValue(data []byte) kv.Handle { // EncodeTableIndexPrefix encodes index prefix with tableID and idxID. func EncodeTableIndexPrefix(tableID, idxID int64) kv.Key { - key := make([]byte, 0, prefixLen) + key := make([]byte, 0, prefixLen+idLen) key = appendTableIndexPrefix(key, tableID) key = codec.EncodeInt(key, idxID) return key