add get random bucket interface for ObHashMap
This commit is contained in:
parent
01df91a2f9
commit
eb6e5712de
4
deps/oblib/src/lib/hash/ob_hashmap.h
vendored
4
deps/oblib/src/lib/hash/ob_hashmap.h
vendored
@ -85,6 +85,10 @@ public:
|
||||
{
|
||||
return ht_.bucket_end();
|
||||
};
|
||||
int get_bucket_iterator(const int64_t bucket_pos, bucket_iterator &iterator)
|
||||
{
|
||||
return ht_.get_bucket_iterator(bucket_pos, iterator);
|
||||
}
|
||||
iterator begin()
|
||||
{
|
||||
return ht_.begin();
|
||||
|
18
deps/oblib/src/lib/hash/ob_hashtable.h
vendored
18
deps/oblib/src/lib/hash/ob_hashtable.h
vendored
@ -905,6 +905,24 @@ public:
|
||||
return bucket_iterator(this, bucket_num_, NULL);
|
||||
}
|
||||
|
||||
int get_bucket_iterator(const int64_t bucket_pos, bucket_iterator &iterator)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
hashbucket *bucket = NULL;
|
||||
if (OB_UNLIKELY(!inited(buckets_)) || OB_UNLIKELY(NULL == allocer_)) {
|
||||
ret = OB_NOT_INIT;
|
||||
HASH_WRITE_LOG(HASH_WARNING, "hashtable not init, backtrace=%s", lbt());
|
||||
} else if (OB_UNLIKELY((bucket_pos < 0) || (bucket_pos >= bucket_num_))) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
HASH_WRITE_LOG(HASH_WARNING, "invalid bucket pos, bucket_pos = %ld, bucket_num = %ld",
|
||||
bucket_pos, bucket_num_);
|
||||
} else {
|
||||
bucket = &buckets_[bucket_pos];
|
||||
iterator = bucket_iterator(this, bucket_pos, bucket);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
iterator begin()
|
||||
{
|
||||
hashnode *node = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user