github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/c-deps/libroach/batch.h (about) 1 // Copyright 2018 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 #pragma once 12 13 #include <libroach.h> 14 #include <rocksdb/db.h> 15 #include <rocksdb/utilities/write_batch_with_index.h> 16 #include "engine.h" 17 18 namespace cockroach { 19 20 struct DBBatch : public DBEngine { 21 int updates; 22 bool has_delete_range; 23 rocksdb::WriteBatchWithIndex batch; 24 25 DBBatch(DBEngine* db); 26 virtual ~DBBatch(); 27 28 virtual DBStatus Put(DBKey key, DBSlice value); 29 virtual DBStatus Merge(DBKey key, DBSlice value); 30 virtual DBStatus Delete(DBKey key); 31 virtual DBStatus SingleDelete(DBKey key); 32 virtual DBStatus DeleteRange(DBKey start, DBKey end); 33 virtual DBStatus CommitBatch(bool sync); 34 virtual DBStatus ApplyBatchRepr(DBSlice repr, bool sync); 35 virtual DBSlice BatchRepr(); 36 virtual DBStatus Get(DBKey key, DBString* value); 37 virtual DBIterator* NewIter(DBIterOptions); 38 virtual DBStatus GetStats(DBStatsResult* stats); 39 virtual DBStatus GetTickersAndHistograms(DBTickersAndHistogramsResult* stats); 40 virtual DBString GetCompactionStats(); 41 virtual DBStatus GetEnvStats(DBEnvStatsResult* stats); 42 virtual DBStatus GetEncryptionRegistries(DBEncryptionRegistries* result); 43 virtual DBStatus EnvWriteFile(DBSlice path, DBSlice contents); 44 virtual DBStatus EnvOpenFile(DBSlice path, uint64_t bytes_per_sync, rocksdb::WritableFile** file); 45 virtual DBStatus EnvReadFile(DBSlice path, DBSlice* contents); 46 virtual DBStatus EnvAppendFile(rocksdb::WritableFile* file, DBSlice contents); 47 virtual DBStatus EnvSyncFile(rocksdb::WritableFile* file); 48 virtual DBStatus EnvCloseFile(rocksdb::WritableFile* file); 49 virtual DBStatus EnvDeleteFile(DBSlice path); 50 virtual DBStatus EnvDeleteDirAndFiles(DBSlice dir); 51 virtual DBStatus EnvLinkFile(DBSlice oldname, DBSlice newname); 52 virtual DBStatus EnvOpenReadableFile(DBSlice path, rocksdb::RandomAccessFile** file); 53 virtual DBStatus EnvReadAtFile(rocksdb::RandomAccessFile* file, DBSlice buffer, int64_t offset, 54 int* n); 55 virtual DBStatus EnvCloseReadableFile(rocksdb::RandomAccessFile* file); 56 virtual DBStatus EnvOpenDirectory(DBSlice path, rocksdb::Directory** file); 57 virtual DBStatus EnvSyncDirectory(rocksdb::Directory* file); 58 virtual DBStatus EnvCloseDirectory(rocksdb::Directory* file); 59 virtual DBStatus EnvRenameFile(DBSlice oldname, DBSlice newname); 60 virtual DBStatus EnvCreateDir(DBSlice name); 61 virtual DBStatus EnvDeleteDir(DBSlice name); 62 virtual DBStatus EnvListDir(DBSlice name, std::vector<std::string>* result); 63 }; 64 65 struct DBWriteOnlyBatch : public DBEngine { 66 int updates; 67 rocksdb::WriteBatch batch; 68 69 DBWriteOnlyBatch(DBEngine* db); 70 virtual ~DBWriteOnlyBatch(); 71 72 virtual DBStatus Put(DBKey key, DBSlice value); 73 virtual DBStatus Merge(DBKey key, DBSlice value); 74 virtual DBStatus Delete(DBKey key); 75 virtual DBStatus SingleDelete(DBKey key); 76 virtual DBStatus DeleteRange(DBKey start, DBKey end); 77 virtual DBStatus CommitBatch(bool sync); 78 virtual DBStatus ApplyBatchRepr(DBSlice repr, bool sync); 79 virtual DBSlice BatchRepr(); 80 virtual DBStatus Get(DBKey key, DBString* value); 81 virtual DBIterator* NewIter(DBIterOptions); 82 virtual DBStatus GetStats(DBStatsResult* stats); 83 virtual DBStatus GetTickersAndHistograms(DBTickersAndHistogramsResult* stats); 84 virtual DBString GetCompactionStats(); 85 virtual DBString GetEnvStats(DBEnvStatsResult* stats); 86 virtual DBStatus GetEncryptionRegistries(DBEncryptionRegistries* result); 87 virtual DBStatus EnvWriteFile(DBSlice path, DBSlice contents); 88 virtual DBStatus EnvOpenFile(DBSlice path, uint64_t bytes_per_sync, rocksdb::WritableFile** file); 89 virtual DBStatus EnvReadFile(DBSlice path, DBSlice* contents); 90 virtual DBStatus EnvAppendFile(rocksdb::WritableFile* file, DBSlice contents); 91 virtual DBStatus EnvSyncFile(rocksdb::WritableFile* file); 92 virtual DBStatus EnvCloseFile(rocksdb::WritableFile* file); 93 virtual DBStatus EnvDeleteFile(DBSlice path); 94 virtual DBStatus EnvDeleteDirAndFiles(DBSlice dir); 95 virtual DBStatus EnvLinkFile(DBSlice oldname, DBSlice newname); 96 virtual DBStatus EnvOpenReadableFile(DBSlice path, rocksdb::RandomAccessFile** file); 97 virtual DBStatus EnvReadAtFile(rocksdb::RandomAccessFile* file, DBSlice buffer, int64_t offset, 98 int* n); 99 virtual DBStatus EnvCloseReadableFile(rocksdb::RandomAccessFile* file); 100 virtual DBStatus EnvOpenDirectory(DBSlice path, rocksdb::Directory** file); 101 virtual DBStatus EnvSyncDirectory(rocksdb::Directory* file); 102 virtual DBStatus EnvCloseDirectory(rocksdb::Directory* file); 103 virtual DBStatus EnvRenameFile(DBSlice oldname, DBSlice newname); 104 virtual DBStatus EnvCreateDir(DBSlice name); 105 virtual DBStatus EnvDeleteDir(DBSlice name); 106 virtual DBStatus EnvListDir(DBSlice name, std::vector<std::string>* result); 107 }; 108 109 // GetDBBatchInserter returns a WriteBatch::Handler that operates on a 110 // WriteBatchBase. The caller assumes ownership of the returned handler. 111 ::rocksdb::WriteBatch::Handler* GetDBBatchInserter(::rocksdb::WriteBatchBase* batch); 112 113 } // namespace cockroach