From 3baa8ea0f6429bc9c1fedd54f507397877545529 Mon Sep 17 00:00:00 2001 From: "Jason E. Aten" Date: Thu, 29 Oct 2020 01:47:26 +0000 Subject: [PATCH] check if roaring data present with RoaringHasData --- dbshard.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dbshard.go b/dbshard.go index 6fc057200..ae69c8867 100644 --- a/dbshard.go +++ b/dbshard.go @@ -303,6 +303,10 @@ func newShardSet() *shardSet { func (per *DBPerShard) HasData(which int) (hasData bool, err error) { // has to aggregate across all available DBShard for each index and shard. + if per.types[which] == roaringTxn { + return per.RoaringHasData() + } + for _, v := range per.Flatmap { hasData, err = v.W[which].HasData() if err != nil { @@ -315,6 +319,21 @@ func (per *DBPerShard) HasData(which int) (hasData bool, err error) { return } +func (per *DBPerShard) RoaringHasData() (bool, error) { + idxs := per.holder.Indexes() + const requireData = true + for _, idx := range idxs { + shards, err := per.TypedDBPerShardGetShardsForIndex(roaringTxn, idx, "", requireData) + if err != nil { + return false, err + } + if len(shards) > 0 { + return true, nil + } + } + return false, nil +} + func (per *DBPerShard) ListOpenString() (r string) { for _, v := range per.Flatmap { r += v.HolderPath + " -> " + v.W[per.useOpenList].OpenListString() + "\n"