mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 02:44:59 +00:00
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package querycontext
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/featurebasedb/featurebase/v3/roaring"
|
|
)
|
|
|
|
func TestRbfWrite(t *testing.T) {
|
|
ctx := context.Background()
|
|
txs := testTxStore(t, "foo", nil)
|
|
q, _ := txs.NewWriteQueryContext(ctx, txs.Scope().AddIndex("i"))
|
|
wr, _ := q.NewWrite("i", "f", "v", 0)
|
|
_, _ = wr.Add(23, 25)
|
|
_, _ = wr.Remove(25)
|
|
// putting nil and removing a missing container are no-ops
|
|
_ = wr.PutContainer(2, nil)
|
|
_ = wr.RemoveContainer(3)
|
|
citer, _, _ := wr.ContainerIterator(3)
|
|
if citer != nil {
|
|
citer.Close()
|
|
}
|
|
_, _ = wr.Container(7)
|
|
_, _ = wr.Count()
|
|
_, _ = wr.Max()
|
|
_, _, _ = wr.Min()
|
|
_, _ = wr.CountRange(0, 65535)
|
|
_, _ = wr.RoaringBitmap()
|
|
_, _ = wr.OffsetRange(0, 0, 0)
|
|
filter := roaring.NewBitmapColumnFilter(23)
|
|
_ = wr.ApplyFilter(0, filter)
|
|
// we're not testing ApplyRewriter and ImportRoaringBits because
|
|
// they have a lot more setup to be testable, and in practice
|
|
// they're all one-line functions anyway.
|
|
_ = q.Commit()
|
|
q, _ = txs.NewQueryContext(ctx)
|
|
rd, _ := q.NewRead("i", "f", "v", 0)
|
|
ok, _ := rd.Contains(23)
|
|
if !ok {
|
|
t.Fatalf("no 23")
|
|
}
|
|
txs.expect(1)
|
|
err := txs.Close()
|
|
if err == nil {
|
|
t.Fatalf("shouldn't close a database while still open")
|
|
}
|
|
q.Release()
|
|
}
|