From db25550fd02173ff266ade8a79d5b6ae0aadd91a Mon Sep 17 00:00:00 2001 From: godchen Date: Mon, 23 Aug 2021 17:49:50 +0800 Subject: [PATCH] Add segment filter interface (#7231) Signed-off-by: godchen --- go.mod | 2 ++ go.sum | 4 +++ internal/util/segmentfilter/segment_filter.go | 29 +++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 internal/util/segmentfilter/segment_filter.go diff --git a/go.mod b/go.mod index 9c1eea7c81..42c83e0bd1 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,8 @@ require ( github.com/HdrHistogram/hdrhistogram-go v1.0.1 // indirect github.com/antonmedv/expr v1.8.9 github.com/apache/pulsar-client-go v0.5.0 + github.com/bits-and-blooms/bitset v1.2.0 // indirect + github.com/bits-and-blooms/bloom/v3 v3.0.1 // indirect github.com/coreos/etcd v3.3.13+incompatible github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect diff --git a/go.sum b/go.sum index 55294c67f6..5252f05a82 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,10 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bloom/v3 v3.0.1 h1:Inlf0YXbgehxVjMPmCGv86iMCKMGPPrPSHtBF5yRHwA= +github.com/bits-and-blooms/bloom/v3 v3.0.1/go.mod h1:MC8muvBzzPOFsrcdND/A7kU7kMhkqb9KI70JlZCP+C8= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= github.com/boynton/repl v0.0.0-20170116235056-348863958e3e/go.mod h1:Crc/GCZ3NXDVCio7Yr0o+SSrytpcFhLmVCIzi0s49t4= diff --git a/internal/util/segmentfilter/segment_filter.go b/internal/util/segmentfilter/segment_filter.go new file mode 100644 index 0000000000..3a25c0f46c --- /dev/null +++ b/internal/util/segmentfilter/segment_filter.go @@ -0,0 +1,29 @@ +package segmentfilter + +import ( + "github.com/bits-and-blooms/bloom/v3" + "github.com/milvus-io/milvus/internal/proto/datapb" +) + +// SegmentFilter is used to know which segments may have data corresponding +// to the primary key +type SegmentFilter struct { + segmentInfos []*datapb.SegmentInfo + bloomFilters []*bloom.BloomFilter +} + +func NewSegmentFilter(segmentInfos []*datapb.SegmentInfo) *SegmentFilter { + return &SegmentFilter{ + segmentInfos: segmentInfos, + } +} + +func (sf *SegmentFilter) init() { + panic("This method has not been implemented") +} + +// GetSegmentByPK pass a list of primary key and retrun an map of +// +func (sf *SegmentFilter) GetSegmentByPK(pk []string) map[int64][]string { + panic("This method has not been implemented") +}