Skip to content

Commit

Permalink
store DPT in tombstone as hexstring (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
aaron-ang authored Apr 24, 2024
1 parent d8fb849 commit b0203bd
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 0 deletions.
9 changes: 9 additions & 0 deletions db/write_batch.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1262,6 +1262,15 @@ Status WriteBatch::Delete(ColumnFamilyHandle* column_family, const Slice& key,
SliceParts(key_with_ts.data(), 2));
}

Status WriteBatch::Delete(ColumnFamilyHandle* column_family, const Slice& key,
const uint64_t dpt) {
uint32_t cf_id = column_family->GetID();
std::string dpt_hex = (boost::format("%x") % dpt).str();
std::array<Slice, 2> key_with_dpt{{key, dpt_hex}};
return WriteBatchInternal::Delete(this, cf_id,
SliceParts(key_with_dpt.data(), 2));
}

Status WriteBatchInternal::Delete(WriteBatch* b, uint32_t column_family_id,
const SliceParts& key) {
LocalSavePoint save(b);
Expand Down
2 changes: 2 additions & 0 deletions include/rocksdb/utilities/transaction.h
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,8 @@ class Transaction {

virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const bool assume_tracked = false) = 0;
virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const bool assume_tracked, uint64_t dpt) = 0;
virtual Status Delete(const Slice& key) = 0;
virtual Status Delete(ColumnFamilyHandle* column_family,
const SliceParts& key,
Expand Down
2 changes: 2 additions & 0 deletions include/rocksdb/utilities/write_batch_with_index.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ class WriteBatchWithIndex : public WriteBatchBase {
Status Delete(const Slice& key) override;
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const Slice& ts) override;
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const uint64_t dpt) override;

using WriteBatchBase::SingleDelete;
Status SingleDelete(ColumnFamilyHandle* column_family,
Expand Down
2 changes: 2 additions & 0 deletions include/rocksdb/write_batch.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ class WriteBatch : public WriteBatchBase {
Status Delete(const Slice& key) override { return Delete(nullptr, key); }
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const Slice& ts) override;
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const uint64_t dpt) override;

// variant that takes SliceParts
// These two variants of Delete(..., const SliceParts& key) can be used when
Expand Down
2 changes: 2 additions & 0 deletions include/rocksdb/write_batch_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ class WriteBatchBase {
virtual Status Delete(const Slice& key) = 0;
virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const Slice& ts) = 0;
virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const uint64_t dpt) = 0;

// variant that takes SliceParts
virtual Status Delete(ColumnFamilyHandle* column_family,
Expand Down
18 changes: 18 additions & 0 deletions utilities/transactions/transaction_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,24 @@ Status TransactionBaseImpl::Delete(ColumnFamilyHandle* column_family,
return s;
}

Status TransactionBaseImpl::Delete(ColumnFamilyHandle* column_family,
const Slice& key,
const bool assume_tracked,
uint64_t dpt) {
const bool do_validate = !assume_tracked;
Status s = TryLock(column_family, key, false /* read_only */,
true /* exclusive */, do_validate, assume_tracked);

if (s.ok()) {
s = GetBatchForWrite()->Delete(column_family, key, dpt);
if (s.ok()) {
num_deletes_++;
}
}

return s;
}

Status TransactionBaseImpl::Delete(ColumnFamilyHandle* column_family,
const SliceParts& key,
const bool assume_tracked) {
Expand Down
2 changes: 2 additions & 0 deletions utilities/transactions/transaction_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ class TransactionBaseImpl : public Transaction {

Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const bool assume_tracked = false) override;
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
const bool assume_tracked, uint64_t dpt) override;
Status Delete(const Slice& key) override { return Delete(nullptr, key); }
Status Delete(ColumnFamilyHandle* column_family, const SliceParts& key,
const bool assume_tracked = false) override;
Expand Down
8 changes: 8 additions & 0 deletions utilities/write_batch_with_index/write_batch_with_index.cc
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,14 @@ Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
return Status::NotSupported();
}

Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
const Slice& /*key*/, uint64_t /*dpt*/) {
if (!column_family) {
return Status::InvalidArgument("column family handle cannot be nullptr");
}
return Status::NotSupported();
}

Status WriteBatchWithIndex::SingleDelete(ColumnFamilyHandle* column_family,
const Slice& key) {
rep->SetLastEntryOffset();
Expand Down

0 comments on commit b0203bd

Please sign in to comment.