Skip to content

Commit

Permalink
refactor: reuse the existing fields
Browse files Browse the repository at this point in the history
Signed-off-by: ekexium <[email protected]>
  • Loading branch information
ekexium committed May 28, 2024
1 parent 9bad6ad commit 55050d3
Showing 1 changed file with 23 additions and 40 deletions.
63 changes: 23 additions & 40 deletions pkg/table/tables/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,6 @@ type TableCommon struct {
// recordPrefix and indexPrefix are generated using physicalTableID.
recordPrefix kv.Key
indexPrefix kv.Key

// avoid duplicated calculations of Cols
// mode -> cols
getColsCache [][]*table.Column
}

// MockTableFromMeta only serves for test.
Expand Down Expand Up @@ -286,57 +282,44 @@ const (
visible
hidden
full
// numMode is only used to get the total of modes
numMode
)

func (t *TableCommon) getCols(mode getColsMode) []*table.Column {
if t.getColsCache == nil {
t.getColsCache = make([][]*table.Column, numMode)
for i := range t.getColsCache {
t.getColsCache[i] = nil
columns := make([]*table.Column, 0, len(t.Columns))
for _, col := range t.Columns {
if col.State != model.StatePublic {
continue
}
}
if t.getColsCache[mode] != nil {
return t.getColsCache[mode]
} else {
columns := make([]*table.Column, 0, len(t.Columns))
for _, col := range t.Columns {
if col.State != model.StatePublic {
continue
}
if (mode == visible && col.Hidden) || (mode == hidden && !col.Hidden) {
continue
}
columns = append(columns, col)
if (mode == visible && col.Hidden) || (mode == hidden && !col.Hidden) {
continue
}
t.getColsCache[mode] = columns
return columns
columns = append(columns, col)
}
return columns
}

// 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 {
t.publicColumns = t.getCols(full)
}
return t.getCols(full)
return t.publicColumns
}

// 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 {
t.visibleColumns = t.getCols(visible)
}
return t.getCols(visible)
return t.visibleColumns
}

// 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 {
t.hiddenColumns = t.getCols(hidden)
}
return t.getCols(hidden)
return t.hiddenColumns
}

// WritableCols implements table WritableCols interface.
Expand Down Expand Up @@ -367,17 +350,17 @@ func (t *TableCommon) WritableConstraint() []*table.Constraint {
if t.Constraints == nil {
return nil
}
writeableConstraint := make([]*table.Constraint, 0, len(t.Constraints))
t.writableConstraints = make([]*table.Constraint, 0, len(t.Constraints))
for _, con := range t.Constraints {
if !con.Enforced {
continue
}
if con.State == model.StateDeleteOnly || con.State == model.StateDeleteReorganization {
continue
}
writeableConstraint = append(writeableConstraint, con)
t.writableConstraints = append(t.writableConstraints, con)
}
return writeableConstraint
return t.writableConstraints
}

// CheckRowConstraint verify row check constraints.
Expand All @@ -401,13 +384,13 @@ func (t *TableCommon) FullHiddenColsAndVisibleCols() []*table.Column {
return t.fullHiddenColsAndVisibleColumns
}

cols := make([]*table.Column, 0, len(t.Columns))
t.fullHiddenColsAndVisibleColumns = make([]*table.Column, 0, len(t.Columns))
for _, col := range t.Columns {
if col.Hidden || col.State == model.StatePublic {
cols = append(cols, col)
t.fullHiddenColsAndVisibleColumns = append(t.fullHiddenColsAndVisibleColumns, col)
}
}
return cols
return t.fullHiddenColsAndVisibleColumns
}

// RecordPrefix implements table.Table interface.
Expand Down

0 comments on commit 55050d3

Please sign in to comment.