summaryrefslogtreecommitdiffstats
path: root/include/shard
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2024-02-07 13:42:34 -0500
committerDouglas Rumbaugh <dbr4@psu.edu>2024-02-07 13:42:34 -0500
commit2c5d549b3618b9ea72e6eece4cb4f3da5a6811a8 (patch)
tree17e08973d38bd20b8358aeb77a90c99cd7f1c835 /include/shard
parent10b4425e842d10b7fbfa85978969ed4591d6b98e (diff)
downloaddynamic-extension-2c5d549b3618b9ea72e6eece4cb4f3da5a6811a8.tar.gz
Fully realized shard concept interface
Diffstat (limited to 'include/shard')
-rw-r--r--include/shard/Alias.h15
-rw-r--r--include/shard/ISAMTree.h8
-rw-r--r--include/shard/TrieSpline.h1
3 files changed, 12 insertions, 12 deletions
diff --git a/include/shard/Alias.h b/include/shard/Alias.h
index a3e8ad8..a234575 100644
--- a/include/shard/Alias.h
+++ b/include/shard/Alias.h
@@ -15,9 +15,6 @@
#include <vector>
#include <cassert>
-#include <queue>
-#include <memory>
-#include <concepts>
#include "framework/ShardRequirements.h"
@@ -34,7 +31,7 @@ using psudb::queue_record;
namespace de {
-thread_local size_t wss_cancelations = 0;
+static thread_local size_t wss_cancelations = 0;
template <WeightedRecordInterface R>
class Alias {
@@ -44,7 +41,7 @@ private:
typedef decltype(R::weight) W;
public:
- Alias(MutableBuffer<R>* buffer)
+ Alias(BufferView<R>* buffer)
: m_reccnt(0), m_tombstone_cnt(0), m_total_weight(0), m_alias(nullptr), m_bf(nullptr) {
m_alloc_size = (buffer->get_record_count() * sizeof(Wrapped<R>)) + (CACHELINE_SIZE - (buffer->get_record_count() * sizeof(Wrapped<R>)) % CACHELINE_SIZE);
@@ -96,17 +93,17 @@ public:
}
}
- Alias(Alias** shards, size_t len)
+ Alias(std::vector<Alias*> &shards)
: m_reccnt(0), m_tombstone_cnt(0), m_total_weight(0), m_alias(nullptr), m_bf(nullptr) {
std::vector<Cursor<Wrapped<R>>> cursors;
- cursors.reserve(len);
+ cursors.reserve(shards.size());
- PriorityQueue<Wrapped<R>> pq(len);
+ PriorityQueue<Wrapped<R>> pq(shards.size());
size_t attemp_reccnt = 0;
size_t tombstone_count = 0;
- for (size_t i = 0; i < len; ++i) {
+ for (size_t i = 0; i < shards.size(); ++i) {
if (shards[i]) {
auto base = shards[i]->get_data();
cursors.emplace_back(Cursor{base, base + shards[i]->get_record_count(), 0, shards[i]->get_record_count()});
diff --git a/include/shard/ISAMTree.h b/include/shard/ISAMTree.h
index 932e767..7de9cb1 100644
--- a/include/shard/ISAMTree.h
+++ b/include/shard/ISAMTree.h
@@ -25,6 +25,7 @@ using psudb::CACHELINE_SIZE;
using psudb::BloomFilter;
using psudb::PriorityQueue;
using psudb::queue_record;
+using psudb::byte;
namespace de {
@@ -222,9 +223,6 @@ public:
return m_tombstone_cnt;
}
- const Wrapped<R>* get_record_at(size_t idx) const {
- return (idx < m_reccnt) ? m_data + idx : nullptr;
- }
size_t get_memory_usage() {
return m_alloc_size;
@@ -234,6 +232,7 @@ public:
return m_bf->memory_usage();
}
+ /* SortedShardInterface methods */
size_t get_lower_bound(const K& key) const {
const InternalNode* now = m_root;
while (!is_leaf(reinterpret_cast<const byte*>(now))) {
@@ -274,6 +273,9 @@ public:
return pos - m_data;
}
+ const Wrapped<R>* get_record_at(size_t idx) const {
+ return (idx < m_reccnt) ? m_data + idx : nullptr;
+ }
private:
void build_internal_levels() {
diff --git a/include/shard/TrieSpline.h b/include/shard/TrieSpline.h
index 8142a67..9473177 100644
--- a/include/shard/TrieSpline.h
+++ b/include/shard/TrieSpline.h
@@ -25,6 +25,7 @@ using psudb::CACHELINE_SIZE;
using psudb::BloomFilter;
using psudb::PriorityQueue;
using psudb::queue_record;
+using psudb::byte;
namespace de {