#include <cstddef>
#include "rocksdb/rocksdb_namespace.h"
+#include "rocksdb/wide_columns.h"
namespace ROCKSDB_NAMESPACE {
virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key,
const Slice& value) = 0;
virtual Status Put(const Slice& key, const Slice& value) = 0;
+ virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key,
+ const Slice& ts, const Slice& value) = 0;
// Variant of Put() that gathers output like writev(2). The key and value
// that will be written to the database are concatenations of arrays of
const SliceParts& value);
virtual Status Put(const SliceParts& key, const SliceParts& value);
+ // Store the mapping "key->{column1:value1, column2:value2, ...}" in the
+ // column family specified by "column_family".
+ virtual Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key,
+ const WideColumns& columns) = 0;
+
// Merge "value" with the existing value of "key" in the database.
// "key->merge(existing, value)"
virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key,
const Slice& value) = 0;
virtual Status Merge(const Slice& key, const Slice& value) = 0;
+ virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key,
+ const Slice& ts, const Slice& value) = 0;
// variant that takes SliceParts
virtual Status Merge(ColumnFamilyHandle* column_family, const SliceParts& key,
virtual Status Delete(ColumnFamilyHandle* column_family,
const Slice& key) = 0;
virtual Status Delete(const Slice& key) = 0;
+ virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
+ const Slice& ts) = 0;
// variant that takes SliceParts
virtual Status Delete(ColumnFamilyHandle* column_family,
virtual Status SingleDelete(ColumnFamilyHandle* column_family,
const Slice& key) = 0;
virtual Status SingleDelete(const Slice& key) = 0;
+ virtual Status SingleDelete(ColumnFamilyHandle* column_family,
+ const Slice& key, const Slice& ts) = 0;
// variant that takes SliceParts
virtual Status SingleDelete(ColumnFamilyHandle* column_family,
virtual Status DeleteRange(ColumnFamilyHandle* column_family,
const Slice& begin_key, const Slice& end_key) = 0;
virtual Status DeleteRange(const Slice& begin_key, const Slice& end_key) = 0;
+ virtual Status DeleteRange(ColumnFamilyHandle* column_family,
+ const Slice& begin_key, const Slice& end_key,
+ const Slice& ts) = 0;
// variant that takes SliceParts
virtual Status DeleteRange(ColumnFamilyHandle* column_family,