code: func (e *executor) readColumnAttrSets(index *Index, ids []uint64) ([]*ColumnAttrSet, error) {
  	if index == nil {
  		return nil, nil
  	}
  
  	ax := make([]*ColumnAttrSet, 0, len(ids))
  	for _, id := range ids {
  		// Read attributes for column. Skip column if empty.
  		attrs, err := index.ColumnAttrStore().Attrs(id)
  		if err != nil {
  			return nil, errors.Wrap(err, "getting attrs")
  		} else if len(attrs) == 0 {
  			continue
  		}
  
  		// Append column with attributes.
  		ax = append(ax, &ColumnAttrSet{ID: id, Attrs: attrs})
  	}
  
  	return ax, nil
  }
docs: // readColumnAttrSets returns a list of column attribute objects by id.