func (t *MemoryTable) RowWithCols(ctx context.Context, h int64, cols []*table.Column) ([]types.Datum, error) {
	t.mu.RLock()
	defer t.mu.RUnlock()
	item := t.tree.Get(itemKey(h))
	if item == nil {
		return nil, table.ErrRowNotFound
	}
	row := item.(*itemPair).data
	v := make([]types.Datum, len(cols))
	for i, col := range cols {
		if col == nil {
			continue
		}
		v[i] = row[col.Offset]
	}
	return v, nil
}
// RowWithCols implements table.Table RowWithCols interface.
RowWithCols implements table.Table RowWithCols interface.
// RowWithCols implements table . Table RowWithCols interface .
func (t *MemoryTable) RowWithCols(ctx context.Context, h int64, cols []*table.Column) ([]types.Datum, error) {
	t.mu.RLock()
	defer t.mu.RUnlock()
	item := t.tree.Get(itemKey(h))
	if item == nil {
		return nil, table.ErrRowNotFound
	}
	row := item.(*itemPair).data
	v := make([]types.Datum, len(cols))
	for i, col := range cols {
		if col == nil {
			continue
		}
		v[i] = row[col.Offset]
	}
	return v, nil
}
func ( t * MemoryTable ) RowWithCols ( ctx context . Context , h int64 , cols [ ] * table . Column ) ( [ ] types . Datum , error ) { t . mu . RLock ( ) defer t . mu . RUnlock ( ) item := t . tree . Get ( itemKey ( h ) ) if item == nil { return nil , table . ErrRowNotFound } row := item . ( * itemPair ) . data v := make ( [ ] types . Datum , len ( cols ) ) for i , col := range cols { if col == nil { continue } v [ i ] = row [ col . Offset ] } return v , nil }
RowWithCols implements table.Table RowWithCols interface.
RowWithCols implements table . Table RowWithCols interface .