23 Readonly_Journal &journal,
29 journal.replay_with_checkpoint_comments(writable);
31 journal.replay_log(writable);
35 static int logdump(Arguments &arguments)
38 const bool sql = arguments.has_flag(
"sql");
39 const bool raw = arguments.has_flag(
"raw");
40 const bool header = arguments.has_flag(
"header");
41 const bool schema_only = arguments.has_flag(
"schema_only");
42 const bool ignore_header = arguments.has_flag(
"ignore_header");
43 const bool load = arguments.has_flag(
"load");
44 const bool print_checkpoint = arguments.has_flag(
"print_checkpoint");
45 const bool blob = arguments.has_flag(
"blob");
46 const std::string_view file_name = arguments.get_next(
"file.joedb");
48 if (arguments.missing())
50 arguments.print_help(std::cerr);
60 std::optional<Readonly_Journal> journal;
64 Journal_Construction_Lock
71 std::unique_ptr<Writable> writable;
73 const Buffered_File *blob_reader = blob ? &file :
nullptr;
76 writable.reset(
new SQL_Dump_Writable(std::cout, blob_reader));
78 writable.reset(
new Raw_Dump_Writable(std::cout));
80 writable.reset(
new Interpreter_Dump_Writable(std::cout, blob));
84 Selective_Writable selective_writable
89 journal->replay_log(selective_writable);
94 Multiplexer multiplexer{*writable, db};
95 dump(*journal, multiplexer, print_checkpoint);
98 dump(*journal, *writable, print_checkpoint);
void dump_header(std::ostream &out, Buffered_File &file)
@ read_existing
fails if does not exist
@ ignore_header
use file size as checkpoint
int main_wrapper(int(*main)(Arguments &), int argc, char **argv)
Process command-line arguments and catch exceptions from main.
void dump(const Readable &db, Writable &writable, bool schema_only)