// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // This source code is also licensed under the GPLv2 license found in the // COPYING file in the root directory of this source tree. // #ifndef ROCKSDB_LITE #include "rocksdb/ldb_tool.h" #include "rocksdb/utilities/ldb_cmd.h" #include "tools/ldb_cmd_impl.h" namespace rocksdb { LDBOptions::LDBOptions() {} void LDBCommandRunner::PrintHelp(const LDBOptions& ldb_options, const char* exec_name) { std::string ret; ret.append(ldb_options.print_help_header); 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("\n"); ret.append( "The following optional parameters control the database " "internals:\n"); ret.append( " --" + LDBCommand::ARG_CF_NAME + "= : name of the column family to operate on. default: default " "column family\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_TRY_LOAD_OPTIONS + " : Try to load option file from DB.\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); DeleteRangeCommand::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); BackupCommand::Help(ret); RestoreCommand::Help(ret); CheckPointCommand::Help(ret); 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(ldb_options, argv[0]); exit(1); } LDBCommand* cmdObj = LDBCommand::InitFromCmdLineArgs( argc, argv, options, ldb_options, column_families); if (cmdObj == nullptr) { fprintf(stderr, "Unknown command\n"); PrintHelp(ldb_options, 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; exit(ret.IsFailed()); } void LDBTool::Run(int argc, char** argv, Options options, const LDBOptions& ldb_options, const std::vector* column_families) { LDBCommandRunner::RunCommand(argc, argv, options, ldb_options, column_families); } } // namespace rocksdb #endif // ROCKSDB_LITE