mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 17:15:56 +00:00
check if roaring data present with RoaringHasData
This commit is contained in:
parent
639e9b3bf0
commit
3baa8ea0f6
1 changed files with 19 additions and 0 deletions
19
dbshard.go
19
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"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue