66 const fs::path file_path =
67 fs::temp_directory_path() /
"aleph_file_b_tree_example.idx";
72 fs::remove(file_path,
ec);
73 fs::remove(file_path.string() +
".wal",
ec);
74 fs::remove(file_path.string() +
".wal.tmp",
ec);
75 fs::remove(file_path.string() +
".journal",
ec);
76 fs::remove(file_path.string() +
".journal.tmp",
ec);
77 fs::remove(file_path.string() +
".lock",
ec);
79 std::cout <<
"Persistent B-Tree example\n";
80 std::cout <<
"=========================\n";
81 std::cout <<
"file path : " << file_path.string() <<
"\n";
82 std::cout <<
"sidecars : " << file_path.string() <<
".lock, "
83 << file_path.string() <<
".wal, "
84 << file_path.string() <<
".wal.tmp, "
85 << file_path.string() <<
".journal, "
86 << file_path.string() <<
".journal.tmp\n\n";
90 for (
int value : {40, 10, 90, 20, 70, 60, 30, 50, 80})
98 <<
"File_B_Tree example produced an invalid in-memory tree";
100 std::cout <<
"first session\n";
101 std::cout <<
"-------------\n";
103 std::cout <<
"height : " <<
catalog.height() <<
"\n";
104 std::cout <<
"page size : " <<
catalog.page_size_bytes() <<
"\n";
105 std::cout <<
"page count : " <<
catalog.page_count() <<
"\n";
106 std::cout <<
"auto sync : " << std::boolalpha
107 <<
catalog.auto_sync_enabled() <<
"\n\n";
113 std::cout <<
"after reopen\n";
114 std::cout <<
"------------\n";
116 std::cout <<
"page count : " <<
reopened.page_count() <<
"\n";
118 if (
const auto lb =
reopened.lower_bound(64);
lb.has_value())
119 std::cout <<
"lower_bound(64) -> " << *
lb <<
"\n";
121 if (
const auto ub =
reopened.upper_bound(70);
ub.has_value())
122 std::cout <<
"upper_bound(70) -> " << *
ub <<
"\n";
125 fs::remove(file_path,
ec);
126 fs::remove(file_path.string() +
".wal",
ec);
127 fs::remove(file_path.string() +
".wal.tmp",
ec);
128 fs::remove(file_path.string() +
".journal",
ec);
129 fs::remove(file_path.string() +
".journal.tmp",
ec);
130 fs::remove(file_path.string() +
".lock",
ec);
132 catch (
const std::exception &
ex)
134 std::cerr <<
"file_b_tree_example failed: " <<
ex.what() <<
'\n';
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.