mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
backport fix broken intersectionCallback functions
This commit is contained in:
parent
c856de4582
commit
b8432b6400
1 changed files with 9 additions and 5 deletions
|
|
@ -4448,10 +4448,13 @@ func intersectionCallbackArrayArray(a, b *Container, fn func(uint16)) {
|
|||
if (na << 2) < nb {
|
||||
for _, va := range ca {
|
||||
for cb[0] < va {
|
||||
if len(cb) > 8 && cb[0] < va {
|
||||
// try to skip ahead a bit faster
|
||||
for len(cb) > 7 && cb[7] < va {
|
||||
cb = cb[8:]
|
||||
}
|
||||
cb = cb[1:]
|
||||
for len(cb) > 0 && cb[0] < va {
|
||||
cb = cb[1:]
|
||||
}
|
||||
if len(cb) == 0 {
|
||||
return
|
||||
}
|
||||
|
|
@ -4540,7 +4543,7 @@ func intersectionCallbackBitmapRun(a, b *Container, fn func(uint16)) {
|
|||
}
|
||||
}
|
||||
|
||||
func intersectionCallbackArrayBitmap(a, b *Container, fn func(uint16)) (n int32) {
|
||||
func intersectionCallbackArrayBitmap(a, b *Container, fn func(uint16)) {
|
||||
statsHit("intersectionCount/ArrayBitmap")
|
||||
bitmap := b.bitmap()
|
||||
ln := len(bitmap)
|
||||
|
|
@ -4550,9 +4553,10 @@ func intersectionCallbackArrayBitmap(a, b *Container, fn func(uint16)) (n int32)
|
|||
break
|
||||
}
|
||||
off := val % 64
|
||||
n += int32(bitmap[i]>>off) & 1
|
||||
if (bitmap[i]>>off)&1 != 0 {
|
||||
fn(val)
|
||||
}
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func intersectionCallbackBitmapBitmap(a, b *Container, fn func(uint16)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue