// returned map will only include labels that had previously been seen (has key) func (d *Data) getCounts(ctx *datastore.VersionedCtx, labels map[indexedLabel]int32) (counts map[indexedLabel]uint32, err error) { var store storage.OrderedKeyValueDB store, err = d.GetOrderedKeyValueDB() if err != nil { return } counts = make(map[indexedLabel]uint32, len(labels)) var i IndexType var label uint64 var val []byte for il := range labels { i, label, err = decodeIndexedLabel(il) if err != nil { return } val, err = store.Get(ctx, NewTypeLabelTKey(i, label)) if err != nil { return } if val == nil { continue } if len(val) != 4 { err = fmt.Errorf("bad size in value for index type %s, label %d: value has length %d", i, label, len(val)) return } counts[il] = binary.LittleEndian.Uint32(val) } return }