From 49815e3841f63dd1750ae16513a55e5724a3f06a Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Wed, 11 May 2016 13:08:45 -0700 Subject: [PATCH] [ldb] Export LDBCommandRunner Summary: The implementation remains where it is. Only the header is exported. This is so that a customized ldb tool can print help along with its own extra commands Test Plan: make ldb Reviewers: sdong, IslamAbdelRahman Reviewed By: IslamAbdelRahman Subscribers: andrewkr, dhruba Differential Revision: https://reviews.facebook.net/D57255 --- include/rocksdb/utilities/ldb_cmd.h | 9 ++ tools/ldb_tool.cc | 188 ++++++++++++++-------------- 2 files changed, 101 insertions(+), 96 deletions(-) diff --git a/include/rocksdb/utilities/ldb_cmd.h b/include/rocksdb/utilities/ldb_cmd.h index 48bbedfed..abcb3082a 100644 --- a/include/rocksdb/utilities/ldb_cmd.h +++ b/include/rocksdb/utilities/ldb_cmd.h @@ -230,6 +230,15 @@ class LDBCommand { const std::vector& flags); }; +class LDBCommandRunner { + public: + static void PrintHelp(const char* exec_name); + + static void RunCommand( + int argc, char** argv, Options options, const LDBOptions& ldb_options, + const std::vector* column_families); +}; + } // namespace rocksdb #endif // ROCKSDB_LITE diff --git a/tools/ldb_tool.cc b/tools/ldb_tool.cc index 5e31d38dd..351d7cf12 100644 --- a/tools/ldb_tool.cc +++ b/tools/ldb_tool.cc @@ -12,108 +12,104 @@ namespace rocksdb { LDBOptions::LDBOptions() {} -class LDBCommandRunner { -public: - - static void PrintHelp(const char* exec_name) { - std::string ret; - - ret.append("ldb - LevelDB Tool"); - ret.append("\n\n"); - ret.append("commands MUST specify --" + LDBCommand::ARG_DB + - "= when necessary\n"); - ret.append("\n"); - ret.append("The following optional parameters control if keys/values are " - "input/output as hex or as plain strings:\n"); - ret.append(" --" + LDBCommand::ARG_KEY_HEX + - " : Keys are input/output as hex\n"); - ret.append(" --" + LDBCommand::ARG_VALUE_HEX + - " : Values are input/output as hex\n"); - ret.append(" --" + LDBCommand::ARG_HEX + - " : Both keys and values are input/output as hex\n"); - ret.append( - " --" + LDBCommand::ARG_CF_NAME + - " : name of the column family to operate on. default: default column " - "family\n"); - ret.append("\n"); - - ret.append("The following optional parameters control the database " - "internals:\n"); - ret.append(" --" + LDBCommand::ARG_TTL + - " with 'put','get','scan','dump','query','batchput'" - " : DB supports ttl and value is internally timestamp-suffixed\n"); - ret.append(" --" + LDBCommand::ARG_BLOOM_BITS + "=\n"); - ret.append(" --" + LDBCommand::ARG_FIX_PREFIX_LEN + "=\n"); - ret.append(" --" + LDBCommand::ARG_COMPRESSION_TYPE + - "=\n"); - ret.append(" --" + LDBCommand::ARG_COMPRESSION_MAX_DICT_BYTES + - "=\n"); - ret.append(" --" + LDBCommand::ARG_BLOCK_SIZE + - "=\n"); - ret.append(" --" + LDBCommand::ARG_AUTO_COMPACTION + "=\n"); - ret.append(" --" + LDBCommand::ARG_DB_WRITE_BUFFER_SIZE + - "=\n"); - ret.append(" --" + LDBCommand::ARG_WRITE_BUFFER_SIZE + - "=\n"); - ret.append(" --" + LDBCommand::ARG_FILE_SIZE + "=\n"); - - ret.append("\n\n"); - ret.append("Data Access Commands:\n"); - PutCommand::Help(ret); - GetCommand::Help(ret); - BatchPutCommand::Help(ret); - ScanCommand::Help(ret); - DeleteCommand::Help(ret); - DBQuerierCommand::Help(ret); - ApproxSizeCommand::Help(ret); - CheckConsistencyCommand::Help(ret); - - ret.append("\n\n"); - ret.append("Admin Commands:\n"); - WALDumperCommand::Help(ret); - CompactorCommand::Help(ret); - ReduceDBLevelsCommand::Help(ret); - ChangeCompactionStyleCommand::Help(ret); - DBDumperCommand::Help(ret); - DBLoaderCommand::Help(ret); - ManifestDumpCommand::Help(ret); - ListColumnFamiliesCommand::Help(ret); - DBFileDumperCommand::Help(ret); - InternalDumpCommand::Help(ret); - RepairCommand::Help(ret); +void LDBCommandRunner::PrintHelp(const char* exec_name) { + std::string ret; + + ret.append("ldb - LevelDB Tool"); + ret.append("\n\n"); + ret.append("commands MUST specify --" + LDBCommand::ARG_DB + + "= when necessary\n"); + ret.append("\n"); + ret.append( + "The following optional parameters control if keys/values are " + "input/output as hex or as plain strings:\n"); + ret.append(" --" + LDBCommand::ARG_KEY_HEX + + " : Keys are input/output as hex\n"); + ret.append(" --" + LDBCommand::ARG_VALUE_HEX + + " : Values are input/output as hex\n"); + ret.append(" --" + LDBCommand::ARG_HEX + + " : Both keys and values are input/output as hex\n"); + ret.append( + " --" + LDBCommand::ARG_CF_NAME + + " : name of the column family to operate on. default: default column " + "family\n"); + ret.append("\n"); + + ret.append( + "The following optional parameters control the database " + "internals:\n"); + ret.append(" --" + LDBCommand::ARG_TTL + + " with 'put','get','scan','dump','query','batchput'" + " : DB supports ttl and value is internally timestamp-suffixed\n"); + ret.append(" --" + LDBCommand::ARG_BLOOM_BITS + "=\n"); + ret.append(" --" + LDBCommand::ARG_FIX_PREFIX_LEN + "=\n"); + ret.append(" --" + LDBCommand::ARG_COMPRESSION_TYPE + + "=\n"); + ret.append(" --" + LDBCommand::ARG_COMPRESSION_MAX_DICT_BYTES + + "=\n"); + ret.append(" --" + LDBCommand::ARG_BLOCK_SIZE + "=\n"); + ret.append(" --" + LDBCommand::ARG_AUTO_COMPACTION + "=\n"); + ret.append(" --" + LDBCommand::ARG_DB_WRITE_BUFFER_SIZE + + "=\n"); + ret.append(" --" + LDBCommand::ARG_WRITE_BUFFER_SIZE + + "=\n"); + ret.append(" --" + LDBCommand::ARG_FILE_SIZE + "=\n"); + + ret.append("\n\n"); + ret.append("Data Access Commands:\n"); + PutCommand::Help(ret); + GetCommand::Help(ret); + BatchPutCommand::Help(ret); + ScanCommand::Help(ret); + DeleteCommand::Help(ret); + DBQuerierCommand::Help(ret); + ApproxSizeCommand::Help(ret); + CheckConsistencyCommand::Help(ret); + + ret.append("\n\n"); + ret.append("Admin Commands:\n"); + WALDumperCommand::Help(ret); + CompactorCommand::Help(ret); + ReduceDBLevelsCommand::Help(ret); + ChangeCompactionStyleCommand::Help(ret); + DBDumperCommand::Help(ret); + DBLoaderCommand::Help(ret); + ManifestDumpCommand::Help(ret); + ListColumnFamiliesCommand::Help(ret); + DBFileDumperCommand::Help(ret); + InternalDumpCommand::Help(ret); + RepairCommand::Help(ret); + + fprintf(stderr, "%s\n", ret.c_str()); +} - fprintf(stderr, "%s\n", ret.c_str()); +void LDBCommandRunner::RunCommand( + int argc, char** argv, Options options, const LDBOptions& ldb_options, + const std::vector* column_families) { + if (argc <= 2) { + PrintHelp(argv[0]); + exit(1); } - static void RunCommand( - int argc, char** argv, Options options, const LDBOptions& ldb_options, - const std::vector* column_families) { - if (argc <= 2) { - PrintHelp(argv[0]); - exit(1); - } - - LDBCommand* cmdObj = LDBCommand::InitFromCmdLineArgs( - argc, argv, options, ldb_options, column_families); - if (cmdObj == nullptr) { - fprintf(stderr, "Unknown command\n"); - PrintHelp(argv[0]); - exit(1); - } - - if (!cmdObj->ValidateCmdLineOptions()) { - exit(1); - } - - cmdObj->Run(); - LDBCommandExecuteResult ret = cmdObj->GetExecuteState(); - fprintf(stderr, "%s\n", ret.ToString().c_str()); - delete cmdObj; + LDBCommand* cmdObj = LDBCommand::InitFromCmdLineArgs( + argc, argv, options, ldb_options, column_families); + if (cmdObj == nullptr) { + fprintf(stderr, "Unknown command\n"); + PrintHelp(argv[0]); + exit(1); + } - exit(ret.IsFailed()); + if (!cmdObj->ValidateCmdLineOptions()) { + exit(1); } -}; + cmdObj->Run(); + LDBCommandExecuteResult ret = cmdObj->GetExecuteState(); + fprintf(stderr, "%s\n", ret.ToString().c_str()); + delete cmdObj; + + exit(ret.IsFailed()); +} void LDBTool::Run(int argc, char** argv, Options options, const LDBOptions& ldb_options,