summaryrefslogtreecommitdiffstats
path: root/include/framework/reconstruction
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2025-01-31 16:16:28 -0500
committerDouglas Rumbaugh <dbr4@psu.edu>2025-01-31 16:16:28 -0500
commit3061bfbf1c4b5092fa4234de3105a615fcef18ea (patch)
tree4c41cdf3b8e3af6e38ba1c8f283d2e35086cc2af /include/framework/reconstruction
parent30da48151f58803968ca3ef5d42e66a9223d80a4 (diff)
downloaddynamic-extension-3061bfbf1c4b5092fa4234de3105a615fcef18ea.tar.gz
More updates
Diffstat (limited to 'include/framework/reconstruction')
-rw-r--r--include/framework/reconstruction/LevelingPolicy.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/include/framework/reconstruction/LevelingPolicy.h b/include/framework/reconstruction/LevelingPolicy.h
index 1523e74..3a0b73e 100644
--- a/include/framework/reconstruction/LevelingPolicy.h
+++ b/include/framework/reconstruction/LevelingPolicy.h
@@ -36,8 +36,7 @@ public:
auto levels = version->get_structure()->get_level_vector();
level_index target_level = find_reconstruction_target(levels);
- assert(target_level != -1);
- level_index source_level = 1;
+ level_index source_level = 0;
if (target_level == invalid_level_idx) {
/* grow */
@@ -47,7 +46,9 @@ public:
for (level_index i = target_level; i > source_level; i--) {
size_t target_reccnt =
(i < (level_index)levels.size()) ? levels[i]->get_record_count() : 0;
- size_t total_reccnt = levels[i - 1]->get_record_count() + target_reccnt;
+ size_t total_reccnt =
+ (i == 0) ? m_buffer_size + target_reccnt
+ : levels[i - 1]->get_record_count() + target_reccnt;
reconstructions.add_reconstruction(i - 1, i, total_reccnt,
ReconstructionType::Merge);
@@ -61,7 +62,7 @@ private:
level_index target_level = invalid_level_idx;
size_t incoming_records = m_buffer_size;
- for (level_index i = 0; i < (level_index)levels.size(); i++) {
+ for (level_index i = 1; i < (level_index)levels.size(); i++) {
if (levels[i]->get_record_count() + incoming_records < capacity(i)) {
target_level = i;
break;
@@ -74,7 +75,7 @@ private:
}
inline size_t capacity(level_index level) const {
- return m_buffer_size * pow(m_scale_factor, level + 1);
+ return m_buffer_size * pow(m_scale_factor, level);
}
size_t m_scale_factor;